SpecterOps公司的研究人員Matt Nelson(馬特·尼爾森)研究是否可以通過(guò)Microsoft Excel發(fā)起跳板攻擊(Pivoting)。結(jié)果,Nelson發(fā)現(xiàn)默認(rèn)的啟動(dòng)與訪問(wèn)權(quán)限存在漏洞,意味著基于宏的攻擊無(wú)需與受害者交互。
跳板攻擊(Pivoting)如果攻擊者成功入侵了一臺(tái)主機(jī),他就可以任意地利用這臺(tái)機(jī)器作為跳板攻擊網(wǎng)絡(luò)中的其他系統(tǒng)。
Nelson發(fā)現(xiàn)未設(shè)置明確的啟動(dòng)或訪問(wèn)權(quán)限的Excel.Application控件會(huì)被DCOM組件暴露。因此攻擊者能通過(guò)其它方式實(shí)施初始攻擊,同時(shí)Microsoft Office宏安全機(jī)制無(wú)法阻止這類跳板攻擊,這時(shí)Excel.Application能被遠(yuǎn)程啟動(dòng),從而達(dá)到攻擊者攻擊的目的。
簡(jiǎn)單來(lái)說(shuō),DCOM默認(rèn)管理權(quán)限允許用戶遠(yuǎn)程啟動(dòng)后,通過(guò)Excel.Application組件接口發(fā)起遠(yuǎn)程鏈接,之后插入惡意的宏就可以發(fā)起攻擊。
這就意味著遠(yuǎn)程攻擊者可以執(zhí)行包含惡意宏的Excel電子表格。由于VBA允許Win32 API訪問(wèn),可能會(huì)出現(xiàn)無(wú)窮無(wú)盡的Shellcode Runner。
這只是PoC,Nelson并未執(zhí)行任何惡意操作,他僅僅啟動(dòng)了calc.exe。Nelson表示,這非常簡(jiǎn)單,只需創(chuàng)建一個(gè)新的宏,隨意命名,并添加至代碼保存。在這起實(shí)例中,Nelson將宏命名為“MyMacro”,并以.xls格式保存文件。
Nelson演示中使用的計(jì)算器Shellcode生成Excel子進(jìn)程,但Nelson指出,由于VBA提供大量與操作系統(tǒng)之間的交互,可能不會(huì)生成子進(jìn)程,而是注入到另一個(gè)進(jìn)程。
Nelson補(bǔ)充稱,最后的步驟是遠(yuǎn)程清除Excel對(duì)象,并將Payload從目標(biāo)主機(jī)上刪除。
雖然這種攻擊受限于擁有本地管理員組權(quán)限的用戶,但這種攻擊媒介相當(dāng)嚴(yán)重。畢竟,在這個(gè)攻擊中,Nelson假設(shè)本地管理員組中的一臺(tái)設(shè)備已經(jīng)被黑。
緩解措施Nelson表示緩解措施是存在的,但這些措施可能會(huì)比較麻煩。系統(tǒng)管理員可以手動(dòng)設(shè)置Excel.Application的遠(yuǎn)程啟動(dòng)和訪問(wèn)權(quán)限,但這可能會(huì)影響其它Office應(yīng)用。
Nelson提出的其它緩解措施包括:使用dcomccnfg.exe修改啟動(dòng)與訪問(wèn)自主訪問(wèn)控制列表(簡(jiǎn)稱DACL),開啟Windows 防火墻,并限制本地管理員的數(shù)量。