《Violent Python》第一章Introduction(2)中文版(乌云python,英文爱好者翻译)
介绍信息:http://zone.wooyun.org/content/23138
第一章 介绍
本章内容 :
1.建立Python开发环境
2.Python语言简介
3.变量,字符串,列表,字典介绍
4.使用用网络,迭代器,异常处理,模块等
5.写第一个Python程序,字典密码破解器
6.写第二个Python程序,压缩文件密码暴力破解
对我来说,武术的非凡之处在于它的简单。简单是最美的,而武术也没有什么特别之处;以无法为有法,以有限为无限,是为武术最高境界!
——截拳道宗师 李小龙
引文:用python 进行的一次渗透测试
最近,我的一个朋友对一家世界财富500强公司的计算机安全系统进行了渗透测试。虽然该公司已建立和保持一个了优秀的安全机制,但他最终还是发现了一个存在漏洞而未打补丁的服务器。几分钟之内,他用开源工具入侵了这个系统并获得管理权。然后,他扫描了剩下的服务器以及客户机,并没有发现任何额外的漏洞
从这一点看,他的测试似乎结束了,但是真正的渗透测试才刚刚开始。
他打开了自己常用的文本编辑器,写下了一个Python测试脚本,利用这个脚本发现了其余存在漏洞的服务器,几分钟后,他获得了网络上超过一千台机器的管理权,然而,在这样做时,他随后产生了一个难以管理的问题。 他知道,系统管理员会注意到他的攻击并拒绝再让他访问。所以,他赶紧想办法在自己已经控制的服务器上,安装永久的后门。
检查了一下自己渗透测试用到的文件后,我的朋友意识到他的这台客户机存在着很重要的域控制器。以此得知,管理员使用了一个完全独立的管理账户登陆域控制器,我的朋友写了一个小脚本检查1000台机器上已经登录的用户,过了一会,我的朋友被告知,域管理员登录到了一个机器。他的监测基本完成,我的朋友现在知道在哪里继续他的攻击了。
我朋友的迅速反应和他在压力下能创造性的思考的能力,促使他成为了一个渗透测试者。他为了成功入侵这个世界500强公司,自己写了脚本工具。
一个小的Python脚本帮助他入侵了一千多个工作站。另一个小脚本允许他在管理员发现前成功triage。一个真正的渗透测试者会编写自己的工具来解决所遇到的问题。所以,让我们以安装开发环境为开始,学习如何打造自己的工具吧!
建立开发环境
Python的下载网站(http://www.python.org/download/)提供了Python在Windows,Mac OS X和Linux上的安装包。如果您运行的是Mac OS X或Linux,Python的解释器已经预先安装在了系统上。安装包为程序开发者提供了Python解释器,标准库和几个内置模块。 Python标准库和内置模块提供的功能范围广泛,包括内建的数据类型,异常处理,数字和数学模块,文件处理功能,如加密服务,与操作系统互操作性,网络数据处理,并与IP协议交互,还包括许多其他有用模块。同时,程序开发者可以很容易地安装任何第三方软件包。
第三方软件包的完整列表可在(http://pypi.python.org/pypi/) 上看到
安装第三方库
在第二章中,我们将利用python的python-nmap包来处理的NMAP的结果。下面的例子描述了如何下载和安装python-nmap包(或其他任何包,真的)。一旦我们已经保存了包到本地,我们解压这个包,并进入压缩后的目录中。在工录中,我们执行python setup.py命令来安装python-nmap包。安装大多数第三方包将遵循下载,解压,执行python setup.py命令进行安装的相同的步骤。
programmer:∼# wget http://xael.org/norman/python/python-nmap/python-
nmap-0.2.4.tar.gz-On map.tar.gz
--2012-04-24 15:51:51--http://xael.org/norman/python/python-nmap/
python-nmap-0.2.4.tar.gz
Resolving xael.org... 194.36.166.10
Connecting to xael.org|194.36.166.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29620 (29K) [application/x-gzip]
Saving to: 'nmap.tar.gz'
100%[==================================================
===================================================
=============>] 29,620 60.8K/s in 0.5s
2012-04-24 15:51:52 (60.8 KB/s) - 'nmap.tar.gz' saved [29620/29620]
programmer:∼# tar -xzf nmap.tar.gz
programmer:∼# cd python-nmap-0.2.4/
programmer:∼/python-nmap-0.2.4# python setup.py install
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.6
creating build/lib.linux-x86_64-2.6/nmap
copying nmap/__init__.py -> build/lib.linux-x86_64-2.6/nmap
copying nmap/example.py -> build/lib.linux-x86_64-2.6/nmap
copying nmap/nmap.py -> build/lib.linux-x86_64-2.6/nmap
running install_lib
creating /usr/local/lib/python2.6/dist-packages/nmap
copying build/lib.linux-x86_64-2.6/nmap/__init__.py -> /usr/local/lib/
python2.6/dist-packages/nmap
copying build/lib.linux-x86_64-2.6/nmap/example.py -> /usr/local/lib/
python2.6/dist-packages/nmap
copying build/lib.linux-x86_64-2.6/nmap/nmap.py -> /usr/local/lib/
python2.6/dist-packages/nmap
byte-compiling /usr/local/lib/python2.6/dist-packages/nmap/__init__.py
to __init__.pyc
byte-compiling /usr/local/lib/python2.6/dist-packages/nmap/example.py
to example.pyc
byte-compiling /usr/local/lib/python2.6/dist-packages/nmap/nmap.py to
nmap.pyc
running install_egg_info
Writing /usr/local/lib/python2.6/dist-packages/python_nmap-0.2.4.egg-
info
为了能够更简单的安装python的包,python提供了easy_install模块。运行这个简单的安装程序,程序将会在python库中寻找这个包,如果发现则下载它并自动安装
programmer:∼ # easy_install python-nmap
Searching for python-nmap
Readinghttp://pypi.python.org/simple/python-nmap/
Readinghttp://xael.org/norman/python/python-nmap/
Best match: python-nmap 0.2.4
Downloadinghttp://xael.org/norman/python/python-nmap/python-nmap-
0.2.4.tar.gz
Processing python-nmap-0.2.4.tar.gz
Running python-nmap-0.2.4/setup.py -q bdist_egg --dist-dir /tmp/easy_
install-rtyUSS/python-nmap-0.2.4/egg-dist-tmp-EOPENs
zip_safe flag not set; analyzing archive contents...
Adding python-nmap 0.2.4 to easy-install.pth file
Installed /usr/local/lib/python2.6/dist-packages/python_nmap-0.2.4-
py2.6.egg
Processing dependencies for python-nmap
Finished processing dependencies for python-nmap
为了快速建立一个开发环境,我们建议您从http://www.backtrack-linux.org/downloads/下载最新的BackTrack Linux的渗透测试专版的复制版。他提供了丰富的渗透测试工具,例如forensic,Web,网络分析和无线攻击。之后的几个例子中。可能会用到一些早已内置在BackTrack的工具或库。当在本书的例子中,需要用到标准库和内置模块之外的第三方包的时候,文章将会提供包的下载网站。
设置一个开发环境时,提前下载好所有的这些第三方模块会是有用的。在BackTrack上,您可以通过执行
easy_install命令来安装额外需要的库,这将会在Linux下,下载大多数例子中用到的库。
programmer:∼ # easy_install pyPdf python-nmap pygeoip mechanize
BeautifulSoup4
第五章用到了一些明确的不能从easy_install下载的的蓝牙库。您可以使用包管理器下载并安装这些库。
attacker# apt-get install python-bluez bluetooth python-obexftp
Reading package lists... Done
Building dependency tree
Reading state information... Done
<..SNIPPED..>
Unpacking bluetooth (from .../bluetooth_4.60-0ubuntu8_all.deb)
Selecting previously deselected package python-bluez.
Unpacking python-bluez (from .../python-bluez_0.18-1_amd64.deb)
Setting up bluetooth (4.60-0ubuntu8) ...
Setting up python-bluez (0.18-1) ...
Processing triggers for python-central
此外,第五章和第七章中的几个例子需要一个Windows版的Python下载器。最新的Windows版的Python下载器,请访问http://www.python.org/getit/
最近几年python源代码已经延伸成了2.x和3.x两个分支。Python的原作者Guido van Rossum试图清理代码使语言变得更一致,这个行为打破了python 2.x版本与之后版本的兼容性,例如作者对prin语句的更改。在本书出版时,BackTrack 5 R2把Python 2.6.5作为稳定的python版本。
programmer# python -V
Python 2.6.5