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