开源的渗透测试工具,如何编写渗透测试工具

作者:hacker 分类:黑客接单 时间:2022-11-22 15:30:24 浏览:143

内容导读:导航目录:1、常用的***安全工具有哪些?2、内网渗透-常用工具免杀3、渗透测试工具有哪些4、打造自己的渗透测试框架—溯光5、web渗透测试工具常用的***安全工具有哪些?1、NMap是一个开源且免费...……

导航目录:

常用的 *** 安全工具有哪些?

1、NMap

是一个开源且免费的安全扫描工具,可被用于安全审计和 *** 发现。能够工作在Windows、Linux、HP-UX、Solaris、BSD(包括Mac OS)、以及AmigaOS上。Nmap可用于探测 *** 中那些可访问的主机,检测它们操作系统的类型和版本,正在提供的服务,以及正在使用的防火墙或数据包过滤器的信息等。由于它既带有GUI界面,又提供命令行,因此许多 *** 与系统管理员经常将它运用到自己的日常工作中,其中包括:检查开放的端口,维护服务的升级计划,发现 *** 拓扑,以及监视主机与服务的正常运行时间等方面。

2、Wireshark

作为业界更好的工具之一,Wireshark可以提供免费且开源的渗透测试服务。通常,您可以把它当作 *** 协议分析器,以捕获并查看目标系统与 *** 中的流量。它可以在Linux、Windows、Unix、Solaris、Mac OS、NetBSD、FreeBSD、以及其他操作系统上运行。Wireshark广受教育工作者、安全专家、 *** 专业人员、以及开发人员的使用和喜爱。那些经由Wireshark还原的信息,可以被其图形用户界面(GUI)或TTY模式的TShark工具来查看。

3、Metasploit

作为一个安全项目,Metasploit可为用户提供有关安全风险或漏洞等方面的重要信息。该开源的框架可以通过渗透测试服务,让用户获悉各种应用程序、平台和操作系统上的最新漏洞,以及可以被利用的代码。从渗透测试角度来看,Metasploit可以实现对已知漏洞的扫描,侦听,利用,以及证据的收集。它提供可在Linux、Windows以及Apple Mac OS上运行的命令行和图形用户界面。虽然Metasploit是一种商业工具,但它附带有一个开源的有限试用版。

4、Netsparker

作为一款商业化的安全测试工具,Netsparker是一个精确、自动化且易用的Web应用安全扫描程序。该工具可以被用于自动化地识别Web应用服务中的跨站点脚本(XSS)和SQL注入等安全风险。通过基于证据的扫描技术,它不仅可以生成风险报告,还能够通过概念证明(Proof of Concept),来确认是否有误报,并能减少手动验证漏洞的时间。

5、Acunetix

是一款全自动化的Web漏洞扫描程序。它可以智能地检测、识别并报告超过4500种Web应用漏洞,其中包括XSS XXE、SSRF、主机头部注入(Host Header Injection)和SQL注入的所有变体。作为一种商业工具,Acunetix通过其DeepScan Crawler来扫描重AJAX(AJAX-heavy)客户端类型的单页面应用(SPA)和HTML5网站。

6、Nessus

是针对安全从业人员的漏洞评估解决方案。它能够协助检测和修复各种操作系统、应用程序、乃至设备上的漏洞、恶意软件、配置错误、以及补丁的缺失。通过运行在Windows、Linux、Mac、Solaris上,用户可以用它来进行IP与网站的扫描,合规性检查,敏感数据搜索等测试。

7、W3af

作为一个免费工具,W3af是一个Web应用攻击和审计框架。它通过搜索、识别和利用200多种已知的Web应用漏洞,来掌控目标网站的总体风险。这些漏洞包括:跨站点脚本(XSS)、SQL注入、未处理的应用错误、可被猜测的密钥凭据、以及PHP错误配置等。W3af不但适用于Mac、Linux和Windows OS,而且提供控制台和图形用户界面。

8、Zed Attack Proxy

由OWASP开发的免费且开源的安全测试工具。它可以让您在Web应用中发现一系列安全风险与漏洞。由于支持Unix/Linux、Windows和Mac OS,即使您是渗透测试的新手,也能轻松地上手该工具。

9、Burpsuite

作为一个严控“入侵者”扫描工具,Burpsuite被部分安全测试专家认为:“如果没有它,渗透测试将无法开展。”虽然不是免费,但是Burpsuite提供丰富的功能。通常,人们可以在Mac OS X、Windows和Linux环境中使用它,以实现爬取内容和功能,拦截 *** ,以及扫描Web应用等测试目的。

10、Sqlninja

作为更好的开源渗透测试工具之一,Sqlninja可以利用Microsoft SQL Server作为后端,来检测Web应用上的SQL注入威胁和漏洞。该自动化测试工具提供命令行界面,可以在Linux和Apple Mac OS X上被使用。Sqlninja具有包括:对远程命令进行计数,DB指纹识别,及其检测引擎等描述性功能。

内网渗透-常用工具免杀

Mimikatz其实并不只有抓取口令这个功能,它还能够创建票证、票证传递、hash传递、甚至伪造域管理凭证令牌等诸多功能。由于mimikatz的使用说明网上资料很多,这里就不多加介绍了,随着这两年hw行动越来越多,企事业单位也都开始注重内网安全,有预算的会上 *** 的终端安全、企业版杀软或者EDR,就算没有预算的也会装个360全家桶或者主机卫士之类的,这也导致很多时候你的mimikatz可能都没法拷贝过去或者没有加载执行,拿了台服务器却横向移不动就尴尬了。因为这款工具特别出名所以被查杀的机率很大, 我们可以通过 github 上的开源代码对其进行源码免杀从而 bypass 反病毒软件。

Mimikatz 源代码下载

免杀步骤

替换 mimikatz 关键字 shenghuo

mimikatz 下的文件全部改为 shenghu

把项目里所有的文件注释去掉

/_ Benjamin DELPY gentilkiwi benjamin@gentilkiwi.com Licence : _/

打开红色框框内的内容,替换图标文件

出现 无法找到 v140 的生成工具(平台工具集 =“v140”),要选择自己安装的平台工具集

重新生成

生成的程序能够正确运行

成功过360

PrintSpoofer做免杀

printspoofer提权工具目前主流的提权工具之一,360 安全会自动查杀,其他杀毒软件并不会查杀。

源码下载地址:

将PrintSpoofer.cpp 里面的输出帮助文档全部清空

导入图标

重新生成,程序生成成功

成功过360

metasploit 是一款开源的安全漏洞检测工具,同时Metasploit 是免费的工具,因此安全工作人员常用 Metasploit 工具来检测系统的安全性。Metasploit Framework (MSF) 在 2003 年以开放源码方式发布,是可以自由获取的开发框架。 它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、 shellcode 编写和漏洞研究提供了一个可靠平台。其中攻击载荷模块(Payload) , 在红队中是个香饽饽,使用这个模块生成的后门,不仅支持多种平台,而且 Metasploit 还有编码器模块(Encoders),生成后门前,对其进行编码转换,可以混 淆绕过一部分杀毒软件。

工具 Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup 下载地址

metasploit源码下载:metasploit-loader/master/src/main.c

选择:文件-新建项目-consoleApplication-c 项目

把winsock2.h 移动到windows.h 上 不然编译会出错。

将这四处的数字改为其他数字

设置攻击载荷,执行后成功上线

成功过360

生成python64位的shellcode

添加生成的shellcode

编译成程序

pyinstaller -F test.py —noconsole

此时还要做的就是更改图标,这里介绍一种 ***

首先右击它,选择“添加到压缩文件”

在弹出来的一个“压缩文件名和参数”框中设置压缩文件格式为“ZIP”,压缩方式为“存储”,压缩选项为“创建自解压格式压缩文件”。

随后选择“高级”选项卡。选择了“高级”选项卡以后直接点击“自解压选项”

在设置选项卡中解压后运行对应程序

在模式选项卡中选择解压临时文件夹和全部隐藏

随后再选择“更新”选项卡,在覆盖方式中选择“覆盖所有文件”

最后选择“文本和图标”选项卡,在自定义自解压文件徽标和图标中选择“从文件加载自解压文件图标”,点击“浏览”,找到自己想要加载的图标文件后并打开

然后就点击确定(两次)就可以生成一个新的exe程序了。图标已经改变了,再运行测试一下

上传去目标主机,这里更改了程序名称

在线查杀

是很流行的编程语言,也可以用它来做一个加载器运行cobaltstrike的 shellcode,生成出来的 文件特别的小,可以很好地投递传输。

项目地址 用 vs2017 打开 sln 项目文件

选择 xorkryptor 生成编码器 用 cobalt strike生成 raw 二进制文件

encrypt.bin 就是经过编码后的文件

项目里面存有 Rsources 和 encrypt.bin 文件 事实上项目是没有这个文件夹和文 件所以在当前目录新建文件夹和将生成好的shellcode文件 encrypt.bin 复制到文 件夹里。右键选择编译文件即可。

此时文件正常

重新编译,成功生成后门程序

成功过360

成功上线

渗透测试工具有哪些

1、Kali Linux

不使用Kali Linux作为基本渗透测试操作系统,算不上真正的黑客。Kali Linux是基于Debian的Linux发行版,

设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。更先由Offensive Security的Mati

Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。

Kali Linux的前身是BackTrack

Linux,有进攻性安全部门的专业人士维护,它在各个方面都进行了优化,可以作为进攻性渗透测试工具使用。

2、Nmap

Nmap是发现企业 *** 中任何类型的弱点或漏洞的绝佳工具,它也是审计的很好工具。该工具的作用是获取原始数据包并确定哪些主机在 *** 的特定段上可用,正在使用什么操作系统,以及识别特定主机的数据包防火墙或过滤器的不同类型和版本正在使用。Nmap对渗透测试过程的任何阶段都很有用并且还是免费的。

3、Wireshark

Wireshark是一个无处不在的工具,可用于了解通过 *** 的流量。虽然通常用于深入了解日常TCP/IP连接问题,但Wireshark支持对数百种协议的分析,包括对其中许多协议的实时分析和解密支持。如果不熟悉渗透测试,Wireshark是一个必须学习的工具。

4、John the Ripper

John the

Ripper是一个很流行的密码破解工具,是渗透测试工具包中的一个很必要的补充。它可以用来确定数据库中的未知弱点,通过从传统字典中找到的复杂和流行的单词列表,获取文本字符样本,并用与正在生成的密码相同的格式,对其进行加密来达到目的。

5、Hashcat

Hashcat自称世界上最快和更先进的密码恢复应用程序,可能并不是谦虚,懂Hashcat的人肯定知道它的价值。Hashcat让John the

Ripper一筹莫展。它是破解哈希的首选渗透测试工具,Hashcat支持多种密码猜测暴力攻击,包括字典和掩码攻击。

6、Hydra

Hydra在需要在线破解密码时发挥作用,例如SSH或FTP登录、IMAP、IRC、RDP等等。将Hydra指向你想破解的服务,如果你愿意,可以给它传递一个单词列表,然后扣动扳机。像Hydra这样的工具提醒人们为什么限制密码尝试和在几次登录尝试后断开用户连接可以成功地防御攻击者。

7、Sqlmap

Sqlmap,是非常有效的开源的SQL注入工具,并且自动化检测和利用SQL注入缺陷并接管数据库服务器的过程,就像它的网站所说的那样。Sqlmap支持所有常用目标,包括MySQL、oracle、PostgreSQL、Microsoft

SQL、server等。

打造自己的渗透测试框架—溯光

TrackRay简介

溯光,英文名“TrackRay”,意为逆光而行,追溯光源。同时致敬安全圈前辈开发的“溯雪”,“流光”。

溯光是一个开源的插件化渗透测试框架,框架自身实现了漏洞扫描功能,集成了知名安全工具:Metasploit、Nmap、Sqlmap、AWVS等。

溯光使用 Java 编写,SpringBoot 作为基础框架,JPA + HSQLDB嵌入式数据库做持久化,Maven 管理依赖,Jython 实现 Python 插件调用,quartz 做任务调度,freemarker + thymeleaf 做视图层,Websocket 实现命令行式插件交互。

框架可扩展性高,支持 Java、Python、 *** ON 等方式编写插件,有“漏洞扫描插件”、“爬虫插件”、“MVC插件”、“内部插件”、“无交互插件”和“可交互插件” 等插件类型。

功能展示

主页

登录

任务创建

任务列表

任务详情

无交互接口插件调用

MVC插件示例

交互式插件控制台

MSF 控制台

依赖环境

JDK 1.8

Python 2.7

Maven

Git

Metasploit

Nmap(建议安装)

SQLMAP(建议安装)

AWVS

**加粗为必须环境,没有安装程序则无法正常编译运行

不论是 Windows 还是 linux 一定需要先安装 JDK1.8 和 Maven。安装过程这里不做演示。保证 JDK 和 Maven 都在系统环境变量,能执行java -version 和 mvn --version即可。

安装过程

之一步

手动启动 AWVS 服务

登录后台,生成一个API密匙。

复制密匙和 AWVS 的地址。

找到web/src/main/resources/application.properties配置文件。

修改如下部分

第二步

找到你 python 的第三方库目录。

Windows 的一般在 python 安装目录下的/Lib/site-packages

Linux 下可以通过输出 sys.path 来找第三方包路径

我的是 D:/Python2/Lib/site-packages

同样找到web/src/main/resources/application.properties配置文件。

修改python.package.path参数

第三步

安装 Maven 后找到仓库位置。

如果没有在 settings.xml 里配置指定仓库目录,默认会在当前用户目录中生成一个 .m2的目录

找到仓库目录后修改 application.properties 的 maven.repository.path参数

第四步

这个是 DNSLOG 回显检测漏洞时需要的。

去 ceye.io 注册一个账号,拿到给你分配的域名和 TOKEN。

修改配置文件

第五步

启动 msf 和 sqlmapapi。

如果你是 kali 操作系统,可以直接运行startdep.sh。

如果是其他系统,则要找到 metasploit 和 sqlmap 的目录分别执行

启动成功后修改配置文件

第六步

编译打包程序

等待依赖下载完成和编译完成,如果以上操作都没有出现问题则会提示 BUILD SUCCESS

编译成功后会在当前目录打包一个trackray.jar就是溯光的主程序。

然后直接执行startup.bat或startup.sh溯光就会启动服务。

没有抛出异常或ERROR日志,访问 8080 端口正常。

服务启动正常后,登录 iZone 社区账号。

**开发插件建议使用 Intellij IDEA IDE,需要安装 lombok 插件。

目录结构

插件

AbstractPlugin

这是交互式插件和非交互式插件的父类。

BASE常量

其中的静态常量 BASE 是 /resources/include/ 的所在目录。

如果你的插件需要额外的静态资源,那么你可以在 /resources/include 目录里创建一个和插件 KEY 相同的文件夹,便于识别,如果没有在 @Plugin 注解中设置 value 则默认的插件 KEY 就是当前类名首字母小写。

如 Typecho001 = typecho001

check(Map param)

这是用于检验是否合规的 *** ,需要被强制重写,当返回 true 时才会调用 start() ***

param 参数是从前台传过来的参数键值对。

常被用于检验参数格式是否正确或漏洞是否存在。

after()

在 start() *** 之前调用

before()

在 start() *** 之后调用

start()

这是一个抽象 *** ,所有继承了该类的子类都需要重写这个 *** 。

在 check *** 通过后会调用 start() ***

start() *** 返回值最终会会当做插件结果,响应给前台。

shell()

调用当前系统 shell 来辅助完成插件功能。

executor()

插件执行的主 ***

crawlerPage

http请求对象(不推荐使用)

fetcher

执行 http 请求对象(不推荐使用)

errorMsg

当校验不通过时,返回给前台的信息。

param

前台传过来的参数键值对

requests

HTTP 发包工具(推荐使用)

hackKit

hack 常用工具包

无交互插件

无交互插件需要你填写好所有要填写的参数,直接请求接口来执行插件。

默认需要去继承 CommonPlugin类。

这是一个抽象类,继承了 AbstractPlugin

主要多出来两个属性:request 和 response。

继承了 CommonPlugin 的类可以通过调用这两个属性来控制请求和响应内容。

无交互插件同时也需要使用 @Rule 和 @Plugin 插件,这两个注解后面会讲到。

在 ,找到相应的插件填写好参数提交即可完成调用。

或直接调用接口。

交互式插件

交互式插件一般在命令行控制台中调用,可以允许你通过命令行交互来完成插件的调用。

交互式插件由 Websocket 实现,想要写一个交互式插件,首先要继承 WebSocketPlugin 类。

同时设置 @Rule 注解的 websocket 参数为 true ,如果需要异步交互需要将 sync 也设置为 true。

内部插件

内部插件是不可以通过外部去调用的,需要继承 InnerPlugin 并使用 @Plugin 注解,通常在漏洞扫描时时会调用。

例如 “网页爬虫”,“指纹识别”,“端口扫描” 等,都是通过调用内部插件实现的。

还有用于检测 SSRF 等漏洞用的 FuckCeye 插件也属于内部插件。

通过 spring 的自动注入,来注入内部插件到当前对象。

例子可参考 WebLogicWLSRCE.java

爬虫插件

爬虫插件会在扫描任务被勾选“网页爬虫”时调用,每爬取一条请求就会调用一次爬虫插件。

爬虫插件需要继承 CrawlerPlugin,继承该类必须重写 check 和 process *** 。

check *** 用于检验请求是否符合插件规则,以免产生多余请求。

当 check *** 返回为 true 时会调用 process *** 。

process *** 里写插件主要检测代码。

addVulnerable()

当插件检测出漏洞时,可以通过调用 addVulnerable() *** 来向数据库插入一条漏洞。

requests

requests 属性为请求工具包,处理 https 和 http 都很方便。

response

response 属性为当前爬虫得到的 HTTP 响应。

task

task 属性为当前任务对象,如果你的爬虫插件不是检测漏洞而希望是检测一些敏感信息的话可以修改 task.getResult() 里的属性。

参考 FingerProbe.java 或 InfoProbe.java。

target

爬虫爬取到的 URL 对象。

fetcher crawlerPage

http 请求对象(不建议使用)。

漏洞扫描插件

漏洞扫描插件会在,扫描任务中勾选“漏洞攻击模块”时调用。

漏洞扫描插件分为三种

1.独立插件

独立的漏洞扫描插件需要继承 AbstractExploit 并使用 @Plugin 或 @Exploit

AbstractExploit 中有以下需要了解的 *** 和属性。

requests

http / https 发包工具

target 当前扫描任务的地址。

task

当前扫描任务对象。

check()

check 是一个抽象 *** ,需要被子类强制重写。

该 *** 一般用于检验是否符合当前漏洞扫描插件的规则,以免产生多与请求。

attack()

attack 也是一个抽象 *** ,需要被子类强制重写。

该 *** 是检测漏洞的主 *** 。

before()

在 attack *** 前执行

after()

在 attack *** 后执行

addVulnerable()

当插件检测出漏洞时,可以通过调用 addVulnerable() *** 来向数据库插入一条漏洞。

fetcher crawlerPage

http 请求对象(不建议使用)。

2.漏洞规则

位于

实际上这是一个“内部插件”,会在勾选漏洞模块攻击时调用。

有一些漏洞检测 *** 很简单,只通过简单的判断响应体就能识别出来,也就没有必要再去写一个独立的插件而占用空间了。

在 doSwitch() *** 中会先去根据当前任务的指纹识别结果走一遍 switch 流程。

swtich 的每一个 case 都是 WEB 指纹的枚举对象。

当 switch 找到当前任务 WEB 指纹对应的 case 后,case 内的代码会通过构建一个漏洞规则添加到 loaders *** 里。

如果规则是通用的,可以写在 switch 的外面。

3.kunpeng *** ON插件

kunpeng 是一个 go 语言编写的 poc 测试框架,这里我对 kunpeng 的 *** ON 插件做了一个支持。

只需要按照 kunpeng json 插件的格式规范创建一个 json 文件到 /resources/json 目录。

在扫描任务勾选“漏洞攻击模块”时会被调用,或通过 MVC 插件调用 。

MVC 插件

位于

MVC 插件的特点在于,他可以像是在写一个功能一样,而非简单的接口式调用。

MVC 插件需要继承 MVCPlugin 类,并使用 @Rule,@Plugin 注解。

MVCPlugin 内置了一个 ModelAndView 对象, 是 SpringMVC 提供的。

可以通过 setViewName() 来指定视图层的网页模板。

通过 addObject(key,value) 向视图层网页模板注入参数。

这里的视图层是使用 thymeleaf 实现的,需要懂 thymeleaf 的语法。

例子可以参考:com.trackray.module.inner. *** ONPlugin

继承 MVCPlugin 必须要重写一个 index *** ,这是插件的入口。

如果需要写其他的功能,就得再创建一个 public 返回值为 void 的无参 *** 。

并且要在该 *** 上使用 @Function 注解,该注解的 value 参数如果不填写的话则默认的 requestMapping 地址为 *** 名。

例如

最后还需要在 /module/src/main/resources/templates 创建一个目录名为插件 KEY 的目录。

里面存放扩展名为 .html 的模板文件。

Python 插件

python 插件有两种实现方式。

1.通过命令行实现

这种方式最为简单,通过在 include 里写一个 python 脚本。

然后在插件里调用 shell() *** 来执行系统命令。

案例可参考 com.trackray.module.plugin.windows. *** b.MS17010

但这样还需要再写 java 的代码,对于没有学过 java 的人来说很不友好。

2.通过jython实现

jython 是一个 Python 语言在 Java 中的完全实现。

我将它的调用过程写成了一个交互式插件。

你可以通过在 /resources/python/ 目录下安装如下规范去创建一个 python 文件。

在这个 python 文件中需要写两个 *** 。

关于注解

@Rule

一般用在“可交互插件”和“无交互插件”类上。

@Plugin

WEB指纹

这里顺便再说一下如何添加指纹库。

指纹库位于 base 模块,是一个枚举类。

可以在首部或尾部添加一条新的枚举,尽量使用 $ 开头。

之一个参数是 指纹的名称,如果第二个参数是 String 类型则是该指纹的说明。

FingerBean 类是指纹匹配对象。

web渗透测试工具

之一个:NST

NST一套免费的开源应用程序,是一个基于Fedora的Linux发行版,可在32和64位平台上运行。这个可启动的Live

CD是用于监视、分析和维护计算机 *** 上的安全性;它可以很容易地将X86系统转换为肉机,这有助于入侵检测, *** 流量嗅探, *** 数据包生成, *** /主机扫描等。

第二个:NMAP

NMAP是发现企业 *** 中任何类型的弱点或漏洞的绝佳工具,它也是审计的好工具。该工具的作用是获取原始数据包并确定哪些主机在 *** 的特定段上可用,正在使用什么操作系统,以及识别特定主机的数据包防火墙或过滤器的不同类型和版本正在使用。NMAP对渗透测试过程的任何阶段都很有用并且还是免费的。

第三个:BeEF工具

BeEF工具主要利用移动端的客户,它的作用是用于检查Web浏览器,对抗Web抗击。BeEF用GitHub找漏洞,它探索了Web边界和客户端系统之外的缺陷。很重要的是,它是专门针对Web浏览器的,能够查看单个源上下文中的漏洞。

第四个:Acunetix Scanner

它是一款知名的 *** 漏洞扫描工具,能审计复杂的管理报告和问题,并且通过 *** 爬虫测试你的网站安全,检测流行安全漏洞,还能包含带外漏洞。它具有很高的检测率,覆盖超过4500个弱点;此外,这个工具包含了AcuSensor技术,手动渗透工具和内置漏洞测试,可快速抓取数千个网页,大大提升工作效率。

第五个:John the Ripper

它是一个简单可快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持大多数的加密算法,如DES、MD4、MD5等。