目录

  • 前言
  • 一、信息收集工具
  • 二、脆弱性分析工具
  • 三、漏洞利用工具
  • 四、嗅探与欺骗工具
  • 五、密码攻击工具
  • 六、权限提升工具
  • 七、Web应用工具
  • 八、无线攻击工具
  • 九、硬件黑客工具
  • 十、维持访问工具
  • 十一、取证工具
  • 十二、逆向工程工具
  • 十三、压力测试工具
  • 十四、报告工具
  • 十五、kali Top10 工具
  • 本章小结

前言

Kali系统预装了大量的安全工具,可以说是一个安全工具的数据库。在kali2018.2系统中就有600多个工具,工具如此之多,掌握所有的工具是不现实的,只有需要用的时候再去学习工具的使用即可。但是了解这些工具的用途,掌握一些常用的安全工具是必要的,本篇文章主要对一些常用的安全工具进行介绍,这里只需要简单地了解一下这些工具的用途和使用方法,在后边的文章中将会用到这些工具完成相应的实操,还会具体讲解这些工具的使用。

kali提供的工具有很多,从应用和功能的角度可以将工具分成14种类型,分别是:

信息搜集、脆弱性分析、漏洞利用、嗅探和欺骗、密码工具、权限提升、web应用、无线攻击、硬件黑客、权限维持、取证工具、逆向工程、压力测试、报告工具。

kali系统工具的介绍可参考官方网站:https://www.kali.org/tools/

一、信息收集工具

信息收集时进行安全渗透测试必要的准备工作,其主要目的是收集渗透测试目标的基本信息,包括操作系统信息、网络配置信息、应用服务信息等。kali提供的信息收集工具的使用模式分为三种,分别是:命令行模式、图形用户界面模式和Shell命令行模式

名称使用模式描述
Amap命令行Amap是一个服务扫描工具,它是最早被称为下一代扫描器的软件,可以识别不同的应用程序,即使这些程序运行在一个异常的端口上。Amap最早开始支持UDP协议和IPv6地址空间的扫描,可作为nmap重要的补充工具。同时amap还提供未知应用特征的自动测定功能,让我们可以方便定制扫描结果
arp-scan命令行arp-scan是一个用来进行系统发现和指纹识别的命令行工具,它可以构建并发送ARP请求到指定的IP地址,并且显示返回的任何响应
DMitry命令行DMitry是一个用C语言开发的UNIX/(GUN)Linux命令行工具,能够收集目标主机尽可能多的信息,包括主机所在的子域、电子邮件地址、运行时间、TCP端口扫描、whois查询等。
dnmap命令行dnmap是一个能够在多台客户机上执行分布式nmap扫描的框架,它可以读取包括nmap命令的文件,并把该命令文件发给与之相连的多台客户机,在这些客户机上执行nmap文件中的命令。dnmap框架采用的是客户机/服务器模式,服务器发布命令,客户机执行命令,从而实现分布式nmap扫描
dnsenum命令行dnsenum通过执行多线程Perl脚本来枚举域的DNS信息,从而发现非相邻的IP块
Fierce命令行Fierce不是一个IP地址扫描器,也不是一个DDos工具,它不是涉及来扫描整个互联网或执行任何非针对性的攻击的。它是一个Perl脚本,是一个侦察工具,可以对域进行快速扫描,用来定位公司网络内部和外部可能的目标
MaltegoTeeth图形用户界面Maltego是一个独特的平台,用于向组织拥有和运营的环境传递清晰的威胁画面。Maltego的独特优势在于证明单点故障的复杂性和严重性以及网络设备间的信任问题
Nmap命令行Nmap是一个免费的、开源的用于网络发现和安全审计的工具,可用于网络资产管理、网络服务升级管理、监控主机或服务正常运行等任务Nmap功能强大,可判断主机是否在线,判断主机运行的操作系统类型和版本,判断主机提供了哪些服务(应用程序名称和版本)、使用了什么类型的过滤器或防火墙,以及其他几十种特性。
p0f命令行来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的 p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包 NAT、负载均衡、应用代理等,它是一个万能的被动操作系统指纹工具。 情况下也没有问题。同时p0f在网络分析方面功能强大,可以用它来分析
Recon-NGShell命令行令行 Recon-NG是由Python编写的一个开源的Web侦查(信息收集)框架, 成数据库,可把查询结果结构化存储在其中,有报告模块,把结果导出为报告。 使用它可以自动地收集信息和网络侦查。其命令格式与Metasploit默认集
smtp-user-enum命令行大部分基于类Unix系统的邮件服务,采用操作系统账号作为邮件账号, 因此对于其邮件账号的探测,其实就等同于对操作系统账号的探测,以便进 行后续弱密码口令的破解。smtp-user-enum基于三种方法验证邮件账号是否 存在,同时支持基于字典的批量验证。
snmp-check命令行snmp-check是一款基于默认或指定团体名,对目标设备进行信息批量查 询的工具,其默认支持Windows、类Unix、网络设备和打印机等。完全依靠 人工来监控大型网络的运行状态,是一种令人崩溃的任务。SNMP协议可以大 大简化系统和网络管理员的工作,实现问题的快速定位和排查。
Unicornscan命令行Unicornscan是一款通过尝试连接用户系统(User-Land)分布式TCP/ IP堆栈获得信息和关联关系的端口扫描器。它是一个新的信息收集引擎,主 要用于安全研究和通讯测试,主要特点是精确、灵活而且高效。
Wireshark图形用户界面Wireshark从Ethereal发展而来,是一款网络数据包捕获和分析工具, 它使用WinPcap作为接口,可跳过TCP/IP协议栈直接与网卡进行数据包的 交换。

Kali系统提供的信息收集工具还有很多,以上是一些比较常用的工具,这些工具的功能几乎涵盖了信息收集的各个方面,有操作系统的信息、应用服务的信息、网络信息等,熟练使用这些工具,对目标系统和网络的信息进行收集,在后续的安全渗透测试过程中,就能做到“知己知彼,百战不殆”。

二、脆弱性分析工具

在信息收集的基础上,要进行渗透,需要对目标系统或网络的脆弱性(也就是漏洞)进行进一步的分析, Kali系统提供了大量实用的脆弱性分析工具来发现这些漏洞,为后续的漏洞利用提供支持。Kali提供的脆弱性分析工具如下表所示:

名称使用模式描述
BBQSQLShell命令行BBQSQL是一款用Python写的SQL盲注框架,对SQL注入漏洞 攻击非常有效。它是一种半自动工具,自带一个直观的UI用户界 面,允许许多难以触发的SQL注入变得用户化,使设置攻击更容易。 BBQSQL用法非常灵活,与数据库无关,不关心数据或数据库,而大 多数SQL注入工具是要具体的数据库或语言建立的。
BED命令行BED(Bruteforce Exploit Detector)是一款缓存区漏洞检测 工具。它预置了十一种插件。这些插件针对不同的服务或系统,如 FTP、SMTP、POP等。同时,这些插件内包含了已知的各种攻击载荷。 BED通过加载插件,向目标主机发送攻击数据。如果发现目标无法响 应,说明目标可能存在溢出区漏洞。经过多次测试验证,就可以判断 漏洞出现的位置。然后手工执行验证,采用代码审核、反编译等方式, 就可以找出漏洞具体触发机制,从而加以利用
cisco-auditing- tool命令行cisco-auditing-tool简称CAT,是一款小型的安全审计工具, 可检测出Cisco路由器常见的漏洞,可发现注入默认密码、默认 SNMP字符串和老版本IOS上存在的漏洞。
cisco-global- exploiter命令行cisco-global-exploiter是一个小型的Perl脚本,是一个针对 思科设备的漏洞利用工具合集,支持对思科设备的14种独立的漏洞 进行测试。
cisco-torch命令行cisco-torch是一款专门针对思科设备的扫描工具,它具备多种 应用层协议的指纹识别特性,借助与第三方指纹库的比对,可以轻 松识别目标设备及系统类型。同时由于采用了多线程的开发方式, 所以在性能上torch也同样表现突出。另外在密码破解和漏洞利用 方面, torch也具备相应的能力。如果torch破解了设备读写权限的 SNMP Community,还可进一步利用其获取设备的完整配置信息。
copy-router-config命令行copy-router-config专门针对思科设备而设计,利用SNMP协议 下载和上传思科设备的配置文件。其使用需要tftp服务的配合。
Lynis命令行Lynis是个系统安全检查工具,针对Unix和Linux系统而设计, 通过执行一些安全检查发现系统安装的软件以及存在的配置问题。 它能生成一份全面的加固建议列表,并由使用者灵活地自行决定实 施哪些加固措施。
Nessus图形用户界面Nessus是世界上最流行的漏洞扫描程序,提供完整的电脑漏洞 扫描服务,并随时更新其漏洞数据库,可同时在本机或远端上遥控, 进行系统的漏洞分析扫描。它完整支持SSL,可自定义功能插件。
OpenVAS图形用户界面OpenVAS是目前开源世界最重要的漏洞管理产品,它基于各种安 全行业的标准规范,广泛覆盖了已知的漏洞类型。它使用简单方便, 可以自动发现系统中绝大部分已知漏洞,无论对于渗透测试者还是 安全运维工程师,这都是一个不能缺少的强大工具。

针对一些特定的应用, Kali也提供了相应的脆弱性分析工具,如VoIP、Oracle数据库、IPv6协议等,有兴趣的读者可参考Kali官网,上面有这些工具的详细介绍和使用方法,这里不再多言。

三、漏洞利用工具

发现了操作系统、网络和应用服务的漏洞,接下来怎么利用这些漏洞发起攻击呢? Kali提供了许多漏洞利用工具,这些工具有些功能强大,可以利用的漏洞类型很多,甚至可以定制,针对新的漏洞可通过添加脚本的方式扩展其功能,如Metasploit;有些工具则是针对特定的漏洞具有很好的效果。Kali系统提供的漏洞利用工具如下表所示

名称使用模式描述
Armitage图形用户界面Armitage是一款Java写的Metasploit图形界面化的攻击软 件,可以用它结合Metasploit中已知的exploit来针对主机存在 的漏洞自动化攻击。通过命令行的方式使用Metasploit难度较高, 需要记忆的命令过多,而Armitage完美地解决了这一问题,用户 只需要简单地点击菜单,就可以实现对目标主机的安全测试和攻 击。Armitage良好的图形展示界面,使得攻击过程更加直观,用 户体验更好。因其操作的简单性,尤其适合Metasploit初学者对 目标系统进行安全测试和攻击。
Backdoor Factory命令行Backdoor Factory是一款安全测试工具,可以轻松地生成 win32PE后门测试程序,可对可执行文件进行自动化的后门部署。
BeEF图形用户 界面BeEF(Browser Exploitation Framework)是一款针对浏览 器的渗透测试工具。
Metasploit FrameworkShell命 令行Metasploit Framework简称MSF,是一个用Ruby语言写的渗 透测试框架,该框架集成了很多可用的渗透利用工具(Exploit Tools),比如著名的ms08_067等。用户可以在这个框架下进行一 系列的渗透测试,利用现有的装备(Payload),如Meterpreter 等进一步拿取对方的Shell。Metasploit功能强大,几乎每一个 从事渗透测试的人都会接触到它,是渗透测试的利器。
Exploitdb命令行Exploitdb(Exploit Database)是一个由“Offebnsive Security”提供的漏洞利用程序集的数据库,可以用于平时的参 考和使用。它存储了大量的漏洞利用程序,可以帮助安全研究者 和渗透测试工程师更好地进行安全测试工作。

上述漏洞利用工具中Metasploit可以说是最重要也最强大的,Metasploit的Exploit脚本主要用Ruby语言编写,在Kali系统中可看到脚本的源代码,掌握Ruby语言将有助于对这些渗透脚本的理解。

四、嗅探与欺骗工具

嗅探与欺骗主要针对的是网络。嗅探是指利用计算机的网络接口截获其他计算机数据报文的一种手段,在嗅探到的数据包中提取有价值的信息,比如用户名、密码等。欺骗则是利用一些技术手段,骗取目标主机的信任,取得有价值的信息。Kali系统提供的嗅探与欺骗工具如下表所示:

名称使用模式描述
Burp Suite图形用户界面Burp Suite是Web应用程序测试的最佳工具之一,其功能强大,可 破解登陆表单,执行会话令牌等多种的随机性检查。 以执行多种任务,如请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登录表单,执行会话令牌等多种的随机性检查
HexInject命令行HexInject是一款进行数据注入的工具,它可以直接向网络注入渗透 人员构造的数据包,也可以篡改网络传输的数据,为了避免修改带来的数 据验证问题,它默认对包进行校验,并重新计算包的大小,从而提高数据 的真实性。
Inviteflood命令行Inviteflood攻击的目标是VoIP,它针对VoIP信令协议SIP中的 INVITE会话请求指令发起洪水攻击,被攻击者会瞬间接到大量呼叫请求, 导致类似电话占线的效果,严重时可令IP电话客户端程序崩溃。
iSMTP命令行iSMTP是一款SMTP用户枚举和测试工具。
Mitmporary命令行Mitmproxy俗称中间人攻击的神器,是一款有篡改功能的http代理 工具,支持http通信与https通信,既可用于中间人攻击,也可用于 html抓包调试。mitmproxy共有五种代理模式:正向代理模式、反向代理 模式、上行代理模式、透明代理模式和socks5代理模式。
SniffJoke命令行SniffJoke是一款网络防嗅探工具。在渗透测试中,通过网络嗅探, 可以获取网络通信主机的各种信息。SniffJoke可以防止嗅探,它能够自 动对用户的网络数据进行附加处理,如发包延时、修改部分包、注入无效 包,使得嗅探工具无法正确读取数据包,并且所有这些附加处理不会影响 数据接收方的处理。
SSLstrip命令行SSLstrip也叫https降级攻击,攻击者拦截用户流量后,欺骗用 户与攻击者进行http通信,攻击者与服务器保持正常通信(http或 https),从而获取用户信息。
WebScarab图形用户界面WebScarab是由开放式Web应用安全项目(OWASP)组开发的一个用 来分析使用HTTP和HTTPS协议的应用程序框架。WebScarab可以记录它 检测到的会话内容(请求和应答),并允许使用者通过多种形式来查看记 录。可以用它来调试程序中较难处理的漏洞,也可以帮助安全专家发现潜 在的程序漏洞。

嗅探与欺骗是安全渗透的常用手段,它充分利用网络协议自身在安全方面不完善的问题,通过IP欺骗、ARP欺骗等手段非法拦截或捕获网络中传输的数据包,通过对网络数据包的分析进一步获取有用的用户信息。通过上述工具的学习和使用,将有助于对网络协议的理解。

五、密码攻击工具

密码攻击可以说是安全渗透至关重要的一步,也是最为关键的一步。很多系统的安全大门就靠密码守护着,很多攻击者攻击到最后一步就是攻不破那道密码防线。一个好的、强健的密码是很难依靠技术手段攻破的,除非采用一些社会工程手段,如威逼、利诱或者利用对方的疏忽套取密码。那么密码攻击是否毫无用武之地呢?事实上,网络中充斥着很多弱口令,这些弱口令产生的原因是很多用户缺乏安全意识,为了容易记忆,设置的密码过于简单或者有规律可循。另外,一些工具可以帮助我们对弱口令进行自动尝试,节省了手动尝试的时间和繁琐操作,这些工具对弱口令的攻击还是非常有效率的。kali系统提供的密码攻击工具如下表所示:

名称使用模式描述
BruteSpray命令行BruteSpray是一个基于Nmap扫描结果的端口爆破工具,它可以载入Nmap的扫描结果(gnmap/XML文件),然后对我们指定的端口和IP进行枚举口令爆破,爆破过程可通过自动调用Medusa来进行。
Cain&Abel图形用户界面Cain&Abel 是由0xid.it开发的一个针对Microsoft操作系统的免费口令回复工具,号称穷人使用的LC,这是一款网络管理员必备的工具,它可以用来检测Windows,UNIX用户是否使用了不安全的密码。它的功能十分强大,可以进行网络嗅探、网络欺骗、破解加密口令、解码被打乱的口令、显示口令框、显示缓存口令和分析路由协议,甚至还可以监听内网中他人使用V0IP拨打电话。
Crunch命令行Crunch是一款密码生成工具,可以按照指定的规则(用户可以指定字符集)生成密码字典。它可以产生所有有可能的组合和排列,其生成的字典字符序列可以输出到屏幕、文件或重定向到另一个程序中。
Findmyhash命令行Findmyhash是一款可以破解哈希值的强大脚本,用python语言编写,如果用户希望破解一些难以理解的Hash值,使用Findmyhash脚本可以一键阅读出Hash值内的所有内容。
Hash-Identifier命令行Hash-Identifier并不是Hash破解工具,而是用来判断Hash值所使用的加密方法的工具。
Hydra Hydra-gtk(九头蛇)命令行图形用户界面Hydra是由THC(黑客优选)社区开发的一个在线快速破译密码工具,目的是为研究人员及安全顾问展示如何从远程侵入系统,其密码词库支持超过50种网络协议,包括Telnet、RDP、SSH、FTP、HTTP、HTTPS、SMB等等,还支持多种数据库的密码破译,Hydra-gtk是其图形用户界面
John the Ripper(开膛手约翰)命令行John the Ripper是免费开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD5等。它支持多种不同类型的系统架构,包括Unix,Linux,Windows,Dos模式、BeOs和openVMS,主要目的是破解不够牢固的Unix。Linux系统密码。
Medusa(美杜莎)命令行Medusa和Hydra一样是一款在线密码破解工具。优点是Medusa的稳定性较好,但Medusa支持的模块要比Hydra少很多,也不支持RDF服务协议。同时它的表单破解也存在一些问题。
RainbowCrack命令行 图形用户界面RainbowCrack是一个使用内存时间交换技术加速口令破解过程的口令破解器。它使用了彩虹表也就是一张预先计算好的明文和散列值的对照表。通过预先花费时间创建这样的彩虹表,能够再以后破解口令时节约大量的时间
rtgen命令行rtgen工具用来生成彩虹表。彩虹表是一个庞大的,针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速地破解各种密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上的。不同的加密方式要用不同的彩虹表。
Samdump2命令行Samdump2是一款破解Windows SAM 密码文件的工具。

密码破解采用穷举法,利用工具对密码进行自动尝试,这个过程比较耗时,并且只对弱口令有效。为了缩短时间,往往要用到密码字典,将常用的密码组合写在字典文件中,简单的排在前面,复杂的排在后面,破解密码时从字典文件的开头一个个地尝试,直到尝试出密码为止。对于一些复杂的密码,密码工具往往会失去作用,达不到效果。

六、权限提升工具

目前的操作系统往往是多用户系统,不同的用户有不同的访问权限,从而起到保护系统安全的目的。对系统的访问权限越大,能执行的功能就越多,安全渗透一个很重要的目标就是提升用户权限,获得更大的系统访问权,执行更多的操作。kali提供的权限提升工具如下表所示:

名称使用模式描述
MeterpreterShell命令行Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。在Meterpreter中可以执行Getsystem命令快速提权,Meterpreter会自己尝试用多种方法去提升权限,使得用户只需要运行一条指令就能获得System权限。
SETShell命令行SET是社会工程包,是一个为社会工程设计的开放源码的渗透测试框架。它有许多自定义攻击向量,允许用户快速发起可信攻击。

kali系统提供的很多漏洞利用和密码攻击附带权限提升的功能,用户可以参考kali官网中对这些工具的介绍。

七、Web应用工具

Web应用是互联网最重要的应用之一,其应用范围十分广泛,正是由于Web的普及,使得它几乎成为网络的代名词。同样地,Web应用存在的安全问题很多,是最容易受到攻击的应用之一,因此针对web应用的安全渗透测试十分重要,通过渗透测试有助于发现Web应用的缺点和漏洞,从而弥补web应用的脆弱性,使得Web应用更加完善。kali系统提供的Web应用工具如下表所示:

名称使用模式描述
Arachni命令行Arachni是一个多功能、模块化、高性能的Ruby框架,旨 在帮助渗透测试人员和管理员评估Web应用程序的安全性。同时 Arachni开源免费,可安装在Windows、Linux以及Mac系统上,并 且可导出评估报告。
BlindElephant命令行BlindElephant是一款Web应用程序指纹识别工具。该工具可 以读取目标网站的特定静态文件,计算其对应的哈希值,然后和预 先计算出的哈希值做对比,从而判断目标网站的类型和版本号。目 前,该工具支持15种常见的Web应用程序的几百个版本。同时, 它还提供WordPress和Joomla的各种插件。该工具还允许用户自 已扩展,添加更多的版本支持。
CutyCapt命令行CutyCapt是基于Qt实现的跨平台的将HTML网页转化成矢量 图形和位图图像格式的命令行工具(比如,SVG、PDF、PS、PNG、 JPEG、TIFF、GIF等)。
DIRB命令行DIRB是一个专门用于爆破目录的工具,在Kali中默认已经安 装,类似工具还有国外的patator、dirsearch、DirBuster,国内 的御剑等。
Nikto命令行Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页 服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/ CGIs、超过625种服务器版本、超过230种特定服务器问题。扫描 项和插件可以自动更新(如果需要)。基于Whisker/libwhisker 完成其底层功能。这是一款非常棒的工具,但其软件本身并不经常 更新,最新和最危险的可能检测不到。
OWASPZAP图形用户界面OWASP Zed Attack Proxy Project攻击代理,是一款查找网页 应用程序漏洞的综合类渗透测试工具。它包含了拦截代理、自动处 理、被动处理、暴力破解、端口扫描以及蜘蛛搜索等功能。OWASP ZAP为会话类调试工具,调试功能对网站不会发起大量请求,对服 务器影响较小。
Paros图形用户界面Paros Proxy是一个对Web应用程序的漏洞进行评估的代理程 序,它是一个基于Java的Web代理程序,可以评估Web应用程序 的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies 和表单字段等项目。它包括一个Web通信记录程序、Web圈套程序、 hash计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。 该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。
ProxyStrike图形用户界面ProxyStrike是一款用于web漏洞扫描的工具,需要配置代理使用,带有爬虫模块、请求报告、日志、配置等功能模块
Vega图形用户界面Vega是一个开放源代码的Word应用程序安全测试平台, Vega能够帮助验证SQL注入、跨站脚本、敏感信息泄露和其他一些安全漏洞。Vega使用Java编写,有GUI,可以在Linux、OS X和 Windows下运行。
W3af命令行 图形用户界面Wild(Web Application Attack and Audit Forwardwork)是 个Web应用程序攻击和审计框架。它的目标是创建一个易于使用和 扩展、能够发现和利用Web应用程序漏洞的主体框架。W3af的核心 代码和插件完全由Python编写。项目已有超过130个的插件,这 些插件可以检测SQL注入、跨站脚本、本地和远程文件包含等漏洞。
Webshag命令行Webshag是一个对Web服务器进行安全审计的跨平台多线程工具。Webshag会收集那些通常对Web服务器有用的功能,比如 Webshag是一个用于对Web服务器进行安全审计的跨平台多线 端口扫描、URL扫描和文件模糊测试。可以通过代理和HTTP身份认 证(基于认证或摘要认证),以HTTP或HTTPS的方式扫描Web服务器。 此外Webshag可以凭借IDS规避能力,使请求之间的相关性变得更 复杂。
WebSploitShell命令行WebSploit是一个开源项目,主要用于远程扫描和分析系统漏 洞。使用它可以非常容易和快速发现系统中存在的问题,并用于深 入分析。
WhatWeb命令行Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如 它的名字一样,Whatweb能够识别各种关于网站的详细信息,包括: CMS类型、博客平台、中间件、Web框架模块、网站服务器、脚本类型、 JavaScript库、IP、cookie等等。

Web应用广泛,相应的技术层出不穷,无论是用户前端还是服务器后端,都存在大量的漏洞,是黑客攻击的重点,因此Web的安全问题是网络安全一个十分重要的分支。但是学习Web安全渗透十分不易,各种客户端和服务器端技术非常庞杂,需要掌握大量的背景知识,熟悉各种脚本语言和网站架构。在学习Web安全渗透的过程中,熟练使用上述工具将对用户有很大的帮助,从而事半功倍

八、无线攻击工具

随着无线网络基础设施的提升,以智能手机为代表的无线网络通信得到了广泛的应用。无线网络摆脱了有线网络的限制,携带方便,用户可以随时随地访问网络。随着无线网络带宽的提升,有线网络带宽快这一优势已不明显,因此目前无线网络在智能终端应用方面已经远超有线网络,甚至在笔记本的应用上也有超越有线网络的趋势。随着越来越多的应用转移到智能手机平台,特别是手机购物、手机支付、手机理财应用的普及,近几年针对无线网络的攻击也甚嚣尘上,愈演愈烈。无线网络的安全问题与Web应用的安全问题一样,已成为安全领域一个重要的问题,不容忽视。Kali系统提供的无线攻击工具如下表所示:

名称使用模式描述
Aircrack-ng图形用户界面Aircrack-ng是一个与802.11标准的无线网络分析有关的 安全软件,主要功能有:虚拟管道创建、网络侦测、数据包嗅 探、WEP和WPA/WPA2-PSK破解、essid密码列表的保存和管理。 Aircrack-ng可以工作在任何支持监听模式的无线网卡上并嗅探 802.11b,802.11b,802.11g的数据。该程序可运行在Linux和 Windows上。
Arpspoof命令行Arpspoof是一款专业的ARP断网攻击软件,能够直接欺骗网 关,使得通过网关访问网络的电脑全被欺骗攻击,通过ARP欺骗 达到中间人嗅探和捕获网络数据包的目的,并替换传输中的数据, 方便用户开启ARP断网攻击,抢占网速。
Easy-Creds命令行Easy-Creds是一款欺骗嗅探为主的攻击脚本工具,它具备 ARP毒化、DNS毒化等一些嗅探攻击模式。它最亮的地方就是它 的fake AP(欺骗访问点)功能。它比一般自行搭建的fake AP 要稳定得多,而且里面还包含了针对802.1x的攻击模式。
Gerix Wifi Cracker图形用户界面Gerix Wifi Cracker是一个aircrack图形用户界面的无线 网络破解工具,可破解无线网络密码。
Kismet命令行Kismet是一款802.11二层无线网络探测器、嗅探器和入侵 检测系统,使用该工具可以检测周围的无线信号,并查看所有可 用的无线接入点,并能嗅出802.11a/b/g/n的流量。
Reaver命令行Reaver是一款针对开启Wi-Fi安全防护设定(Wi-Fi Protected Setup,WPS)服务的无线网络的破解工具。
Wifte图形用户界面Wifte是一款使用Aircrack-ng工具集来破解无线网络的带 图形用户界面的工具,是一款自动化WEP、WPA以及WPS破解工具, 特点是可以同时攻击多个采用WEP和WPA加密的网络。

上述无线网络攻击工具很多集中在对无线接入点的攻击上,包括伪造接入点、干扰无线信号、破解WEP/WPA密码等。针对无线网络应用的攻击与有线网络应用类似,可以采用相同的方法。

九、硬件黑客工具

针对一些特定的软硬件平台、产品和文件格式,如Android、Arduino、树莓派、Jave虚拟机、APK文件, Kali提供了一些软硬件环境模拟器,及对应文件格式的转换、编译和反编译的工具,放在硬件黑客工具类下面,这些工具如下表所示

名称使用模式描述
Android-sdk图形用户界面Android-sdk是一款运行于Kali Linux系统的安卓模拟器,为 用户提供了构建、测试和调试安卓应用程序所需的API库和开发工具。
Apktool命令行Apktool是一款APK(Android安装包)反编译工具,具有编译、 反编译、签名等功能。
Arduino图形用户界面Arduino是一款便捷灵活、方便上手的开源电子原型平台,旨在 为艺术家、设计师、爱好者和任何感兴趣的人创造互动对象或环境。
Dex2jar命令行Dex2jar是一个能操作Android的dalvik(. dex)文件格式和 Java(. class)的工具集合。Dex2jar是一个可以将. dex文件转换 成Java的. class文件的转换工具。Dex2jar与JD-GUI组合起来就 能很好地对apk文件进行一个反编译。
Sakis3G命令行Sakis3G是一个经过修改的shell脚本,它能与不同厂商生产的 调制解调器建立3G连接。它能自动设置USB或蓝牙调制解调器,甚 至可以检测操作人员的设置。
Smali/Baksmali命令行Smali/Baksmali分别是指安卓系统里的Java虚拟机(Dalvik) 所使用的一种. dex格式文件的汇编器/反汇编器。

采用上述工具可以模拟特定的软硬件环境,提供特定文件格式的转换,帮助用户实地了解目标环境的运行情况,为进一步的安全渗透测试提供支持。

十、维持访问工具

在渗透进入对方系统,获取访问控制权限并提升权限之后,攻击者如想进一步维持这一访问权限,往往需要使用木马程序、后门程序和Rootkit来达到这一目的。Kali系统提供的维持访问工具如下表所示:

名称使用模式描述
Cryptcat命令行Cryptcat是网络工具Netcat的加密版本。Cryptcat支持TCP、UDP两种 网络协议。它可以在两个计算机之间建立指定的连接,并使用特定的密钥对 传输数据进行加密。为了提高加密效果,该工具允许用户在每次连接时使用 自定义的密钥,从而保证数据的安全性。
Cymothoa命令行Cymothoa是一款可以将ShellCode注入现有进程(插入进程)的后门工具。 借助这种注入手段,它能够把ShellCode伪装成常规程序。它所注入的后门 程序能够与被注入的程序共存,以避免被管理或维护人员怀疑。将ShellCode 注入其他进程,还有另外一个优势就是:即使目标系统的安全防护工具能够 检验可执行程序的完整性,只要它不检查内存,就不能发现后门程序的进程。
Intersect命令行Intersect是一款适合在漏洞利用以后使用的能够自动完成多种后期任 务的程序。它能够自动收集密码文件、赋值SSH密钥、收集网络信息,并能 识别杀毒软件和防火墙程序。若要它自动执行后期任务,用户需要创建自己 的脚本文件,脚本中指定需要执行的各种功能。对于Inetersect来说,每个 功能都有对应的执行模块。
NetCat命令行NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接 (Network Connection)。它被设计成一个可靠的后端(Back-End)工具, 能被其他的程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的 网络调试和开发工具,因为它可以建立用户可能用到的几乎任何类型的连接, 以及一些非常有意思的内建功能。
Weevely命令行Weevely是一款针对PHP的webshell的自由软件,可用于模拟一个类似 于Telnet的连接shell, Weevely通常用于Web程序的漏洞利用,隐藏后门 或者使用类似Telnet的方式来代替Web页面式的管理, Weevely生成的服 务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和 IDS,上传服务器端代码后通常可以通过Weevely直接运行。

维持访问工具可以帮助攻击者维持对目标系统的访问控制权限,防止攻击行为被发现,同时可以留下后门,方便攻击者的下次访问。

十一、取证工具

在对电子证据进行取证的过程中,相应的取证工具必不可少。取证工具是在调查计算机犯罪时,为了保护证据的完整性和有效性所使用的一些辅助工具。取证工具一般分为勘查取证工具和检查取证工具两种,其中勘查取证工具包括在线取证工具、硬盘复制机、写保护接口硬件、数据擦除设备、手机取证系统等;检查取证工具则包括数据恢复工具、密码译破工具、专用计算机法证工具等。这些工具往往需要对磁盘数据、文件数据、加密数据等进行恢复和提取,从中寻找电子证据。Kali系统提供的取证工具如下表所示:

名称使用模式描述
Bulk _ extractor命令行Bulk _ extractor是从数字证据文件中提取诸如电子邮件地址、信 用卡号、URL和其他类型的信息的功能的程序。它是一个有用的取证 调查工具,可以用于许多任务,如恶意软件和入侵调查、身份调查和 网络调查,以及图像分析和密码破解。
Capstone命令行Capstone是一款优秀的反汇编框架,支持多种CPU架构,支持多 个平台,提供反汇编指令的语义详情,用一个授权许可便可以为所有 重要编程语言提供捆包等。
Dumpzilla命令行Dumpzilla是用Python 3.x开发的,目的是提取Firefox, Iceweasel和Seamonkey浏览器的相关信息进行分析。它在Unix和 Windows 32/64位系统下工作,采用命令行界面,所以信息可以通过 管道重定向工具(如grep, awk, cut, sed)进行转储。
Galeta命令行Galeta是一个取证工具,用于检查微软公司Internet Explorer 生产的Cookie文件的内容。它解析文件并输出可以在电子表格中加载 的字段。
Peepdf命令行Peepdf是一个用Python开发的、集成了多个组件的、用于检测 和分析PDF文件是否有害的取证工具。
RegRipper图形用户界 面RegRipper是一款用来对Windows操作系统的注册表进行取证的 工具。
Volatility命令行Volatility是开源的Windows, tinus:MaC, Android的内存取 证分析工具、由Python编写成,命令行操作,支持各种操作系统。

电子证据其实就是计算机能够处理的数字化的数据,它以各种文件格式存储在不同类型的存储介质上。从上表中可以看出,针对不同类型的数据,需要相应的工具去读取,进行取证,有时对于加密数据,需要解密后才能取证。

十二、逆向工程工具

逆向工程(又称反向工程),是一种产品设计技术再现过程。在软件工程领域,一般是先进行UML设计,然后用工具生成代码,这个过程叫正向工程;相应地,从代码生成UML设计图叫作逆向工程。最典型的逆向工程就是程序代码的反汇编或反编译,通过对可执行文件的反向编译还原出其源代码的过程。对于一些危害系统安全的、感染了病毒或者含有恶意代码的可执行文件,如果让其执行可能会引起破坏,造成无法挽回的损失,这时可通过逆向工程手段还原其源代码,在不执行代码的情况下通过对源代码的分析能够更容易地判断并找出恶意代码。Kali系统提供的逆向工程工具如下表所示:

名称使用模式描述
diStorm3命令行diStorm3是Kali Linux自带的一款轻量级、容易使用的反汇编 引擎。它可以反汇编生成16位、32位和64位指令。它支持的指令 集包括FPU、MMX、SSE、SSE2、SSE3、SSSE3、SSE4、x86-64、VMX、 AMDs、SVM等。虽然diStorm3采用C语言编写,但可以被Python、 Ruby、Java快速封装。这样,用户可以使用Python、Rudy等脚本语言编写脚本,并引入diStorm33,从而定制自己的反汇编工具。
edb-debugger图形用户界面edb-debugger是一个跨平台的x86/x86-64调试器。它受到 Ollydbg的启发,但是其目标是在x86和x86-64以及多个操作系 统上运行。Linux是目前edb-debugger唯一官方支持的平台,但 FreeBSD,OpenBSD,OSX和Windows端口正在进行不同程度的功能实现。
Flasm命令行Flasm可以对Flash的SWF文件进行拆解,包括所有的时间表和 事件。通过反汇编,用户可以了解Flash编译器的工作原理,从而提 高用户的ActionScript技能。用户也可以手动对反汇编代码进行优 化,或者根据需要调整代码,然后利用Flasm将用户的更改应用于原 SWF,替换原始操作
JavaSnoop图形用户界面JavaSnoop是一个java应用程序安全测试工具,它允许已拦截的方法,篡改数据和hack运行在计算机上的java应用程序。通常在没 JavaSnoop是一个java应用程序安全测试工具,它允许以拦截的 有源代码的情况下,测试java客户端的安全性是不可预知的。在有源 代码的情况下,可以运行一个简单的java程序,并在远程附加一个调 试器来调试它,单步运行,根据需要改变变量,但对于一个applet来 说要想做到这一点是有点困难的。有时,可能需要修改客户端和服务 器之间的通信,一般的做法是在客户端配置一个代理,在代理上修改 数据。问题的关键是,通信的数据通常不是明文的,可能使用了自定 义的协议、序列化的对象、加密的数据或者多种方式混合应用。这样 要想修改通信过程中的数据是比较困难的。JavaSnoop试图解决这些 问题,它可直接附加到一个运行中的进程,类似于调试器,然后,篡 改方法调用、运行自定义代码或者对系统进行监视。
011yDbg图形用户界面011yDbg是一个新的动态追踪工具,将IDA与SoftICE结合起来, Ring 3级调试器,非常容易上手,已代替SoftICE成为当今最为流行 的调试解密工具。同时还支持插件扩展功能,是目前最强大的调试工具。
Valgrind命令行Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软 件开发工具。

在信息安全领域,逆向工程往往与编程相关,涉及程序代码的编译、反编译、调试等,其目的是分析代码、跟踪代码的运行,判断并评估代码执行的安全性,从中发现可能的恶意代码。

十三、压力测试工具

压力测试是一种基本的质量保证行为,测试的对象可以是一个独立的应用软件或者是一个完整的系统。它是每个产品在流向市场之前进行的一项重要的、全方位的质量检测。压力测试的基本思路很简单,它不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内存、CPU、磁盘空间和网络带宽。压力测试的时间往往持续很久,其目的是通过大量的、全面的操作使得产品长时间、高负荷地工作来检验产品的质量。Kali系统提供的压力测试工具如下表所示:

名称使用模式描述
DHCPig命令行DHCPig可以发起一个高级的DHCP耗尽攻击。它将消耗局域网内的所 有IP地址以及阻止新客户端获取IP,同时它也防止旧客户端释放IP地址。 另外,它会发送无效的ARP去把所有的Windows主机震下线。
FunkLoad命令行FunkLoad是一个功能和负载的Web测试仪,主要用于Web项目,对网 站项目进行功能测试、性能测试、负载测试(如音量的测试或寿命测试) 和压力测试。
iaxflood命令行IAX是Inter-Asterisk eXchange的缩写,也就是Asterisk内部交换 协议。iaxflood则是利用IAX设计缺陷而发起洪水式攻击的工具。
Inundator命令行Inundator是一个支持多目标的、多线程的、队列驱动的、匿名的、 误用入侵检测系统。
MDK3命令行MDK3是一款无线DOS攻击测试工具,能够发起Beacon Flood、 Authentication DoS、Deauthentication/Disassociation Amok等模式的 攻击,另外它还具有针对隐藏ESSID的暴力探测模式、802.1X渗透测试、 WIDS干扰等功能。
rtpflood命令行rtpflood可以洪水攻击RTP通话设备,实现拒绝服务的效果。
inviteflood命令行inviteflood通过TCP/UDP进行泛洪攻击的SIP/SDP会话,该工具可 以在本机产生大量的流量,因为需要在本地读取数据进行对外发送。所以 在流量监控时可能会产生40M/s的速度。
SlowHTTPTest命令行lowHTTPTest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基 本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度 缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并 发将导致DoS。
THC-SSL-DOS命令行HC-SSL-DOS是一款针对SSL的压力测试工具。该工具默认会同服务 器建立400个SSL连接,并且快速进行重新协商Renegotiations,以达到 大量消耗服务器CPU资源的目的。该工具目前只针对开启重新协商功能的 服务器,所以只要关闭该功能,就可以抵御该工具的攻击。

目前很多用于DoS攻击的工具被用来作为压力测试工具,它们的工作原理其实是相同的,都是通过大量的任务耗尽系统资源(CPU、存储和网络带宽)的方法来测试目标的抗压能力。

十四、报告工具

在一次渗透测试结束后,往往需要利用报告工具来生成报告,供工作人员进行存档或者工作报告。一些功能强大且友好的报告工具生成的报告不只包含最终的结果,还包括一些重要的原始数据、中间数据和对数据的分析,并且最终的报告形式可以是多样的、可视化的,用各种图表来生动形象地将结果更好地展示出来。Kali系统提供的报告工具如下表所示:

名称使用模式描述
CaseFile图形用户界面CaseFile是Maltego的姊妹工具,功能非常类似于Maltego。 CaseFile主要针对数据进行离线分析,缺少Maltego的数据采集功能。 它可以导入各类数据,包括Maltego导出的数据。用户可以为信息添 加连接线、标签和注释,标记数据的关系。CaseFile以图形化的方式 展现数据,方便分析人员找出隐含的数据关系。
CherryTree图形用户界面支持富文本编辑和代码高亮,支持Linux和Windows平台。数据采用 CherryTree是一个支持无限层级分类的笔记软件,由Python编与, sqlite或XML存储,支持密码保护。支持从NoteCase、KeepNote、 Knowit、Tomboy、TuxCards、Treepad、Leo等笔记软件导入数据。
dos2unix命令行dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的文 本。
Dradis图形用户界面Dradis框架是一个开源的、用Ruby开发的协作和报告平台。可 生成渗透测试报告,内容包括所提供的服务、使用的方法、发现的结 果和建议。
MagicTree图形用户界面MagicTree是一个面向渗透测试人员的工具,可以帮助用户轻松 直接地进行数据合并、查询、外部命令执行和报告生成,所有的数据 都会以树形结构存储,非常方便。
MetagoofilShell命令行Metagoofil是一款利用Google收集信息的工具,目前支持的文 件类型有Word、PPT、Excel和PDF,结果可生成HTML报告文件。

上述报告工具都有其各自的应用领域,在使用时要根据实际情况来选择。但不管是哪种工具,都使得报告的生成更加自动和便利,节省了工作人员的时间。

十五、kali Top10 工具

针对繁多的Kali工具,业界总结出Kali Top10工具,这些工具功能强大、使用广泛,是Kali工具集中使用最为频繁的十大工具。
这些工具分别是:

Nmap(信息收集、脆弱性分析)、Metasploit(漏洞利用)、John the Ripper(密码攻击)、THC-Hydra(密码攻击)、Wireshark(信息收集、嗅探与欺骗)、Aircrack-NG(无线攻击)、Maltego Teeth(信息收集、漏洞利用、密码攻击、Web应用)、OWASPZAP(Web应用)、Cain&Abel(嗅探与欺骗、密码攻击)、Nikto(Web应用、信息收集)。这些工具在前面的部分都有介绍,掌握这些工具的使用对从事安全渗透测试工作有着很大的帮助,是信息安全的利器。

本章小结

本篇文章按照安全工具的类型,对Kali系统自带的、常用的安全工具做了介绍。无论是对于安全专家还是攻击者,安全工具都是他们从事安全工作的利器。一个好的安全从业人员,熟练掌握各种类型的安全工具是必不可少的。Kali系统免去了人们寻找、安装安全工具的烦恼,大大方便了对安全的学习、研究和工作。但是Kali系统自带的安全工具如此之多,这些工具的功能、作用是什么?什么时候应该使用什么工具?也是一件令人烦恼的事情。为此本篇文章对一些常见的工具按照功能进行了分类介绍,为安全工作人员提供了便利。