在前一節(jié)課中,我們看到使用Meterpreter API運(yùn)行Ruby腳本。在本節(jié)課中,我們將更深入一步。假設(shè)我們想要在被攻那個(gè)破的主機(jī)上開(kāi)啟遠(yuǎn)程API調(diào)用,最簡(jiǎn)單的方法是什么?當(dāng)然是Railgun。它是Meterpreter擴(kuò)展,允許攻那個(gè)擊者直接調(diào)用DLL函數(shù)。通常,它用于調(diào)用Windows API,但是我們可以調(diào)用受害者計(jì)算機(jī)上的任何DLL。
準(zhǔn)備工作
想要啟動(dòng)Railgun,我們首先需要一個(gè)與目標(biāo)主機(jī)建立的活動(dòng)的Meterpreter會(huì)話。要啟動(dòng)Ruby解釋器,我們使用irb命令,跟上一節(jié)課討論過(guò)的一樣。如下圖所示:
圖1: 啟動(dòng)Ruby解釋器
操作步驟
1、識(shí)別您要調(diào)用的函數(shù);
2、在??https://msdn.microsoft.com/en-us/library/aa383749??(v=vs.85).aspx找到函數(shù);
3、檢查函數(shù)所在的庫(kù)(DLL),例如:kernel32.dll??梢哉{(diào)用所選的庫(kù)函數(shù)client.railgun.dll_name.function_name(arg1,arg2,…);
4、Windows MSDN庫(kù)可用于識(shí)別要在目標(biāo)計(jì)算機(jī)上調(diào)用的有用的DLL和函數(shù);
5、我們用client.sys.config.sysinfo API調(diào)用來(lái)收集目標(biāo)主機(jī)信息。如下圖所示:
圖2: 收集目標(biāo)主機(jī)信息
6、如果我們只想要操作系統(tǒng)版本信息,可以使用client.sys.config.sysinfo[‘OS’],如下圖所示:
圖3: 獲取操作系統(tǒng)版本信息
使用Railgun可以帶來(lái)非常強(qiáng)大而令人興奮的體驗(yàn)。您可以練習(xí)自己的調(diào)用和腳本來(lái)分析輸出結(jié)果。但是如果您想調(diào)用的DLL或函數(shù)不是Railgun的一部分怎么辦?不用當(dāng)心,Railgun具有一定的靈活性,使您能夠在Railgun中添加自己的函數(shù)和DLL。在后面的課程中我們會(huì)討論。
工作原理
Railgun是Meterpreter的擴(kuò)展,它使我們無(wú)需編譯自己的DLL即可調(diào)用Windows API。Railgun可用于對(duì)目標(biāo)主機(jī)進(jìn)行遠(yuǎn)程DLL調(diào)用。遠(yuǎn)程DLL調(diào)用是滲那個(gè)透測(cè)試中的一個(gè)重要過(guò)程,因?yàn)樗鼈兿蛭覀兲峁┝四繕?biāo)主機(jī)的命令,可以以完全特權(quán)執(zhí)行任何系統(tǒng)指令。
擴(kuò)展知識(shí)
Railgun現(xiàn)在支持10種不同的Windows API DLLs。您可以在以下文件夾中找到它們的定義:/usr/share /metasploit-framework/lib/rex/post/meterpreter/extensions/stdapi/railgun/def。