python绝技:运用python成为顶级黑客

python绝技:运用python成为顶级黑客

前言

有多少人是因为看了电视,看了那些牛逼的黑客选择成为程序员的。
我貌似也是其中一个,只是自从成为程序员以来,天天都是加班coding,到家就是睡倒床上。兴趣变成了压力。
直到我选择离职,在家修养,才有精力重新把编程变成兴趣。因为Python的无所不能,我选择Python作为主要编程语言。
在这之前已经学过《廖雪峰的python教程》,也看过了《flaskweb实战》,之前还看过《head first in python》,选择《python绝技:运用python成为顶级黑客》这本书,是因为我想知道黑客到底干了啥。

书籍评价

有简单的基础语法介绍,最好还是先有系统学过python再看这本书,会事半功倍。
书籍偏老,2012年的,有些链接失效。另外建议学习期间使用virtualenv, 避免影响到其它项目。
建议看原版,翻译的感觉很一般,有点像是google翻译的。虽然连蒙带猜的看懂,看的有点痛苦,还是建议翻原版,篇幅主要是代码, 英文应该也好看。

有些示例代码可能得相应地改下。譬如pexpect连接ssh那个,代码里是期望提示值是password:
但是我测试的Centos的格式是user@host’s password: 需要自己根据情况去修改下。
ftp破解后,上传文件的代码在python3上执行失败,抛异常了。python2.7没事。
建议用python2.7来运行他的代码。

里面的攻击手段其实已经过期了,仅能参考下。

章节介绍

第一章:语法介绍

从第二章开始我把代码都写了下来,放到了github上。讲了扫描端口,暴力破解ssh,ftp,smb等。参考我的git

第三章:注册表,回收站都是基于windows的。阅读pdf元数据的pypdf在python2.7上可以执行,python3上报错。Skype和Firefox是用sqLite存储的数据。IPhone的GPS信息存储在了consolidated.db(也是SqLite)。

第四章:一个ip到经纬度的数据库,以及相应的解析模块。dpkt不支持3.x,需要注意。
pcap包可以考虑用wireshark抓包生成一个。LOIC这个,得用pcap包才可以用来验证是否是用户下载的。(go2live.cn注:pcap包是服务器开启tcpdump抓包的,问题是谁没事去开启tcpdump呢,这东西一般是我们研发在调试阶段才用的,第三章中有根据firefox本地存储的下载记录取证的,也可以证明是否是用户下载。)
后面都是根据pcap包,做关键词分析,分析是否下载,是否有hive指令,tcp流量是否过高。
需要注意下tcpdump命令, -i 参数是指监听的端口。我的服务器上外网的端口其实是eth1,而不是文中的eth0。
打印TTL时,使用scapy模块报错了(我是mac,通过pip install pcapy和编译安装https://github.com/dugsong/libdnet.git 之后可以运行了,但是在下面的章节中,send调用一直出错,没有解决掉。)
FAST流量和DOMAIN流量攻击都是利用DNS。也是通过分析流量包来确认攻击。
从这章可以看出,玩黑客攻防需要对各层协议非常熟悉,然后才能想出正确的方法。
tcp三次握手和syn攻击可以参考图解TCP协议中的三次握手和四次挥手
snot安装:(mac下可以直接brew install snort,前提是你有homebrew, centos7 可以参考centos7(x64)安装snort
snot最终还是没有成功(_).(配置文件不会整)

第五章:
开启无线的混杂模式后,就会捕获所有的WiFi流量,包括其它人上网数据。
所谓混杂模式,用最简单的语言就是让网卡抓取任何经过它的数据包,不管这个数据包是不是发给它或者是它发出的,点击【http://en.wikipedia.org/wiki/Promiscuous_mode】获取更多有关混杂模式的资料。
我的mac已经是混杂模式。还是用的scapy抓包,分析包的数据…..
现在goole全是https,文中的Google的例子抓不到数据了。
接下来的ftp的例子好可怕。以前以为只有提供WiFi的人可以抓包,却原来任何人在开启混杂模式之后都可以
而ftp传输还是明文的。。真是获取用户名/密码,然后偷取资料的好方法。

利用电脑或手机在重启WiFi后,会从首选网络列表里一个个去尝试链接的特性,可以抓包获取到,分析出电脑或手机的首选网络列表,从而知道连接过哪些网络。

这章同样是建立在流量包分析上。
无人机这个也是通过混杂模式捕获流量之后,分析出通信协议,然后再用Scapy伪造指令发送。
通过scapy命令,可以得到各种公开协议需要的字段,然后就可以伪造了。

蓝牙这块是用的新的蓝牙模块。包括扫描周边的设备。隐藏的蓝牙设备是利用scapy流量抓包到,通过名字查询来确认。(文里仅限制iPhone,利用OUI特征码来识别)
mac下通过pip和easy_install 安装PyBluez都失败,通过https://github.com/karulis/pybluez 下载安装成功。
有些制造商非提供RFCOMM的加密功能,利用些问题,可以利用RFCOMM来发送控制命令或者下载设备内容。
运用的就是蓝牙模块。蓝牙模块不光能发现周围的蓝牙设备,也能发现某蓝牙设备提供了哪些服务。其中有个服务是OBEX,类似于FTP,可以上传/下载文件。利用RFCOMM的17信道可以发送AT命令,从而偷取联系人列表。

第六章:WEB侦查
用Mechanize模块提供的功能来浏览网页。
代理这块,我没有成功。可能是这个Mechanize模块在mac上有问题,除了第一个demo,后面的我基本没有跑通,而且我感觉利用Mechanize+Beautiful Soup 不过就是抓取网页然后分析,没啥好神秘的,没有细看了。
匿名邮件利用十分钟邮箱https://10minutemail.com/10MinuteMail/index.html?dswid=-1507
来注册垃圾账户。
接下其实是结合前面的抓取你的社交网络朋友,然后模拟朋友的语气,通过smtp模块发邮件给你。。邮件内容里可以带上一个有问题的网站链接。

第七章:躲避杀毒系统
大多数杀毒软件主要的检测方法是基于签名检测。Metasploit库才是真的强大。
这里提供了一个攻击思路。写个python脚本,分发给潜在受害者,执行后把cmd.exe和TCP的某个端口关联起来。攻击者就可以利用这个tcp端口远程执行cmd命令了。
这么牛B,我忍不住安装了Parallels Desktop, 安装了windows虚拟机验证下。失败了,并没有看到1337端口listening。在线检查恶意软件的http://vscan.novirusthanks.org/ 我是打不开。。
可以换成http://www.virscan.org/。 这一章我是啥也没有学到。。

介绍的包。

1.python-nmap 扫描端口。需要依赖安装nmap包。
2. pexpect 用来和程序交互,通过正则来寻找预期的输出,然后基于预期做出响应。可以写出自动登录ssh等工具。通过附带的pxssh模块更简单。
3. PyPDF 一个优秀的第三方管理 PDF 文件很实用的库,可以从网站 http://pybrary.net/pyPdf/获得。它提供了文档的信息提取,分割,合并,加密 和解密的能力
4. BeautifulSoup 解析html和xml。
5. PIL 图像库。现在用的是Pillow
6. pygeoip, 一个针对特定功能的库,用来查询 GeoLiteCity数据库的(免费的) 。通过ip地址查询得到经纬度。
7. dpkt: 解析网络报文的,如ftp,sctp,bpg,ipv6等
8. scapy:Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具.文中用到最重要的模块
9. IPy: ip处理模块
10. PyBluez: 蓝牙模块
11. Mechanize:模拟自然浏览器行为来完成与网页之间的交互, 貌似有点老,现在应该是被selenium踢掉了。插一句,之所以要这玩意,应该是为了执行js代码。有些网页的局部是用js动态生成的。
12. Beautiful Soup: 解析html和xml的工具。
13. ctypes库:ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数。
14. pyinstaller, 打包成exe,给没有安装python的用户使用的。

体会

最终的感受是黑客没有想像中的那么神奇。黑客并不是技术达人,相反的,黑客更多的是利用现存的工具。
需要对协议非常熟悉,知道各种漏洞。最主要的是想像力,在没有揭开答案前感觉各种神奇,一旦揭开了答案,你又会觉得不过如此。
有个安全公司的朋友说过,黑客的成功靠的就是想像力+运气。

资源

http://digitaloffense.net/tools/debian-openssl/debian_ssh_dsa_1024_x86.tar.bz2
https://www.rapid7.com/products/metasploit/download/
代理:http://www.xicidaili.com/
ua:http://www.useragentstring.com/pages/useragentstring.php

8 Comments