渗透测试就是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标网络、主机、应用的安全作深入的探测,发现系统最脆弱的环节。
如果说安全检测是“横向地毯式自动化扫描”,那么渗透测试就是“纵向深度人工化入侵”。可见渗透测试的目的是发现目标系统潜在的业务漏洞风险。
渗透测试员都在做什么?
合法的hacking是性感和无聊的部分的混合。不像真实世界的黑客,你可能只有几天的时间来侵入一个系统。甚至,你被期望说明和解释你的方法和你的发现。渗透测试被称作信息安全领域最令人沮丧的工作之一。
总体来说,作为一名渗透测试员,你可能被要求:
1、给基于web的程序、网络以及计算机系统,执行一个常规渗透测试
2、给服务器、系统、网络设置进行一个物理性安全评估
3、设计和创建一个新的渗透测试工具
4、探测web应用,客户端应用和标准协议的漏洞
5、指出攻击者可能使用的方法来利用弱点和缺陷
6、利用社会工程来揭露系统漏洞(脆弱的用户安全操作或密码策略)
7、与之合作的公司的考虑(比如因停机而遭受的损失)
8、与管理者、IT队伍研究、说明、议论安全发现
9、检查和定义信息安全措施的要求
10、致力于提高安全服务,包括持续的提高现有的方法来支持评估
11、提供回馈和评估,为一个组织解决安全问题
12、在一个渗透测试里,你将会集中于利用漏洞(作为目标进入系统)。
用于渗透测试的Python工具
如果你想参与漏洞研究、逆向工程和渗透,我建议你首选Python语言。Python已经有很多完善可用的库,我将在这里把他们列出来。
这个清单里的工具大部分都是Python写成的,一部分是现有C库的Python绑定,这些库在Python中都可以简单使用。
一些强力工具(pentestframeworks、bluetoothsmashers、webapplicationvulnerabilityscanners、war-dialers等)被排除在外,原因是部分工具在德国法律上有一点争议——就算最高法院曾经认定过。这个清单的主要目的是为了帮助白帽黑客,所以我还是怂一点。
Network(网络)
Scapy:一款强大的交互式数据包分析工具,可用作发送、嗅探、解析和伪造网络数据包。
pypcap、Pcapy和pylibpcap:配合libpcap一起使用的数据包捕获模块
libdnet:底层网络工具,含接口查询和以太网帧传输等功能
dpkt:可以快速简单地创建或解析数据包
Impacket:制作和解码网络数据包,支持NMB和SMB等高级协议
pynids:封装了libnids,可用于数据包嗅探、消除IP碎片、TCP流再封装和端口扫描检测
Dirtbagspy-pcap:读取pcap文件
flowgrep:使用正则表达式检索数据包payload
KnockSubdomainScan:使用字典(wordlist)对特定域名进行子域名枚举
Mallory:可扩展的TCP/UDP中间人代理,支持对非标准协议进行实时修改
Pytbull:灵活的IDS/IPS测试框架,包含多种测试
调试和逆向工程分析
Paimei:逆向分析框架,包含PyDBG、PIDA和pGRAPH
ImmunityDebugger:用于加速漏洞利用程序的开发,辅助漏洞挖掘以及恶意软件分析,拥有完整的图形用户界面,并提供了命令行调试器
mona.py:一款挖洞插件
IDAPython:IDAPro插件,整合了Python编程语言,并支持在IDAPro中运行脚本
PyEMU:支持脚本的完整IA-32模拟器,用于恶意软件分析
pefile:读取并操作PE文件
pydasm:提供了libdasmx86反汇编库的访问接口
PyDbgEng:封装了微软WindowsDebugging引擎
uhooker:拦截DLL内部的API调用,查看内存中可执行文件的任意地址
diStorm:针对AMD64的反汇编库,遵循BSD许可协议
python-ptrace:使用ptrace的调试器
vdb/vtrace:vtrace是一款通过Python调试API的跨平台工具,vdb是vtrace所使用的调试器
Androguard:可用于对Android应用进行逆向分析
Fuzzing(模糊测试)
Sulley:集合了大量可扩展组件的模糊测试开发框架
PeachFuzzingPlatform:基于生成和变异的模糊测试框架(可扩展性强)
antiparser:模糊测试工具,提供了故障注入API
TAOF:包含ProxyFuzz,一款中间人网络模糊测试器
untidy:通用的XML模糊测试器
Powerfuzzer:高度自动化和完全可定制的Web模糊测试器
SMUDGE
Mistress:通过畸形数据测试文件格式和协议的工具,基于预定义模式
Fuzzbox:多媒体编解码模糊测试器
ForensicFuzzingTools:可生成模糊测试文件和模糊测试文件系统,文件系统中包含取证
工具和测试系统
WindowsIPCFuzzingTools:利用Windows进程间通信机制来对应用程序进行模糊测试的工具
WSBang:用于对Web服务进行自动化安全测试的Python工具
Construct:解析和构建数据结构的代码库
fuzzer.py(feliam):FelipeAndresManzano设计的一款简单的模糊测试工具
Fusil:编写模糊测试程序的代码库
Web
Requests:一个简单友好的HTTP库
HTTPie:有好的类cURL命令行HTTP客户端
ProxMon:处理代理日志,报告发现的问题
WSMap:寻找Web服务节点,扫描文件
Twill:通过命令行接口浏览Web,支持自动化Web测试
Ghost.py:WebkitWeb客户端
Windmill:允许我们自动化测试和调试Web应用的Web测试工具
FunkLoad:该工具允许加载多功能的Web应用测试组件
spynner:支持Javascript/AJAX的可编程Web浏览模块
python-spidermonkey:桥接MozillaSpiderMonkeyJavaScript引擎,允许对JavaScript脚本和函数进行测试和调用
mitmproxy:支持SSL的HTTP代理,可通过命令行接口实时拦截和编辑网络流量
pathod/pathoc:可向HTTP客户端和服务求提供畸形测试用例
Forensics(信息取证)
Volatility:从RAM样本中提取数据
LibForensics:开发数字取证应用的代码库
TrIDLib:通过代码签名识别文件类型
aft:Android取证工具
MalwareAnalysis(恶意软件分析)
pyew:命令行十六进制编辑器和反汇编工具,主要用于分析恶意软件
Exefilter:过滤邮件、Web页面或文件中的文件格式,检测常见文件格式并能移除活动内容
pyClamAV:向Python软件中添加病毒检测功能
jsunpack-n:通用的JavaScript拆包工具,可枚举浏览器功能并检测漏洞,针对的是浏览器和浏览器插件漏洞
yara-python:识别和分类恶意软件样本
phoneyc:纯蜜罐系统
DidierStevens’PDFtools:分析、识别和创建PDF文件,包括PDFiD、pdf-parser、make-pdf和mPDF
Opaf:开源PDF分析框架,可将PDF转换成可分析和修改的XML树
Origapy:封装了OrigamiRuby模块,可对PDF文件进行安全审查
pyPDF:纯PDF工具,可提取、合并、加密和解密PDF内容
PDFMiner:从PDF文件中提取文字内容
python-poppler-qt4:绑定了PopplerPDF库,支持Qt4
杂项
InlineEgg:Python工具箱,可用于编写小型汇编程序
Exomind:开发开源智能模块的框架,以社交网络服务、搜索引擎和即时消息为中心
RevHosts:根据给定IP地址枚举出虚拟主机
simplejson:使用了GoogleAJAXAPI的JSON解码/编码器
PyMangle:用于创建渗透测试工具所用字典(Wordlist)的命令行工具/代码库
Hachoir:查看和编辑代码流中的数据域
py-mangle:另一款用于创建渗透测试工具所用字典(Wordlist)的命令行工具/代码库
其他有用的库和工具
IPython:多功能增强型交互式PythonShell
BeautifulSoup:爬虫可能会用到的HTML解析器
Mayavi:3D科学数据虚拟化工具
RTGraph3D:创建3D动态图像
Twisted:事件驱动型网络引擎
Suds:用于Web服务的轻量级SOAP客户端
M2Crypto:最完整的OpenSSL封装器
NetworkX:图形库
Pandas:可提供高性能数据结构的数据分析工具
pyparsing:通用解析模块
lxml:采用Python编写的功能丰富且易于使用的XML和HTML工具
Whoosh:纯Python实现的全功能文本索引、搜索库
Pexpect:控制或实现其他程序的自动化,类似DonLibes`Expect`system
Sikuli:虚拟化技术,通过截图实现搜索和自动化GUI,可利用Jython进行脚本扩展
PyQt+PySide:Qt应用框架和GUI库所需模块
总结:
Python工具已经完全改变了渗透测试的风格,提高了效率和测试周期。不断的探索和开发,使得工具变得更加可靠和友好。工具不能解决潜在的安全漏洞,相反,它们有效地发现常见的安全漏洞,并提供修复这些漏洞的建议。