2017年5月13日 星期六

WanaCrypt0r 2.0 (EternalBlue MS 17-010) 手動防止和偵測法


根據 MalwareHunterTeam 的 twitter 記載
Ransomeware WanaCrypt0r 2.0 正在大規模攻擊漏洞系統
台灣首當其衝、是受害者最多的地區之一
請趕快在自己的系統安裝 KB4012215  (此連結為巴哈網友整理的更新檔連結)

如果、假設、萬一
你是很想更新但又無法更新或是更新太慢的人
網路上有人提出關閉 139 或 445 port的方法、或關閉路由器的相關port
這裡提供另一種手動阻擋病毒攻擊手段的方式



注意:此方法只能預防不能治療
如果你的檔案已經開始被加密那就不用繼續看下去了

WanaCrypt0r 2.0據說是根據微軟前陣子被揭發的MS17-010漏洞製作Exploit來加以攻擊的



所以我們可以手動把會引起該漏洞的SMBv1服務關閉來讓他攻擊失敗

Windows 7/2008:

以下指令需要系統管理員執行
1.執行regedit,到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
找空白處按右鍵新增 DWORD key SMB1, 其值為0
新增方式如下圖



2. 重新開機


設定registry之前:

EternalBlue可攻擊成功



設定registry之後:
EternalBlue攻擊失敗



Windows Vista:

和Windows 7/2008一樣的方法
但因為我手中的Exploit不支援Vista
所以無法驗證
只能確定偵測程式可以偵測了


Windows 8以上:

以下指令都需要系統管理員執行

1. 打開 command提示視窗、執行powershell
2. 執行 set-ExecutionPolicy Unrestricted
3. 執行 set-SmbServerConfiguration -EnableSMB1Protocol $false
4. 出現問你要不要修改SMB Server Configuration的確認提示、選 Y (預設值、直接按Enter也可)

5  可以使用 get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol 來檢查是否設定成功
6. 重新開機

如果看不太懂上面的描述
可以參考下面的圖來輸入上面的指令




Windows XP:

請關閉網路連線內容的 File and Printer Sharing for Microsoft Networks
1. 開始 -> 設定 -> 控制台 -> 網路連線
2. 選擇你的對外連線(例如區域連線這種名字)、按右鍵選內容
3. 把 File and Printer Sharing for Microsoft Networks 旁邊的勾勾取消
4. 重新開機 (似乎沒必要、但保險起見還是重開吧)

關閉前:




關閉後:


如果這服務你非用不可的話、那建議你還是換系統吧.....



話說微軟早在去年九月就呼籲停用SMBv1了...


不過還是奉勸大家
能安裝更新還是請盡快安裝
這只是救急法
而且只能阻擋利用此漏洞的病毒和Ransomeware
一但有其他變種出現你可能照樣會中招


關於此漏洞的偵測方式,國外已經有人寫出script並分享了
https://github.com/countercept/doublepulsar-detection-script
你可以手動下載來偵測自己機器是否有危險 (需安裝python)
也可以下載我稍微修改後的程式來偵測
偵測漏洞的原理在我寫的分析系列文第三篇-利用MS17-010的Wannacry
執行前請確認檔案有無被偷改過
另外請確認檔案路徑沒有中文或英文以外語言,不然會執行錯誤


WinXP無法直接左鍵點兩下偵測,需要手動輸入自己的IP
看自己的ip可以在command底下輸入: ipconfig
還是不清楚的話,請看底下的示意圖











1. 左鍵按開始
2. 左建按執行
3. 跳出搜尋框、輸入 cmd
4. 輸入 ipconfig 尋找你的IP、如下圖


5. 切換到你的檔案所在的目錄,執行  detect_doublepulsar_smb --ip [你的IP]
(下一張圖就是輸入命令示範)

v1.07 File Info
Executable File SHA1: 6ADAABF9B3CBA780B90CAE3AEE411F27EB0E22A4
Executable File Size: 9,248,982 Bytes

連結:
https://mega.nz/#!7Upx3ZaS!vUxKXP9I5uYETZp2HoswrS61RRH7sw3saPiFnGord-k


備用載點:
https://www.mediafire.com/?za4wl8cbqaoyy3l

檢查自己機器時,左鍵點兩下程式就可以了 (XP除外)
下面是程式執行後的偵測結果

尚未被攻擊或已裝KB:
顯示 No presence of DOUBLEPULSAR SMB implant



被攻擊成功:(WanaCrypt0r可能已進行加密中或潛伏期)
如果找到WanaCrypt0r的binary會提示使用者



按照本文內容把SMBv1協定關閉時
顯示 This machine has already closed SMBv1 protocol
這是我自己加的、原本的script沒有這段,會跳exception

Windows7的示意圖

XP的示意圖

偵測程式的其他用法請參考原始script的說明
v1.04版本以上程式的會自動掃描系統是否有安裝所需的KB
有或沒有的話都會予以提示 (原本就沒有需要安裝KB的系統就不會提示了)

有安裝相關KB的提示:


未安裝相關KB的提示:





EternalBlue Exploit技術細節 (好孩子不要看,很恐怖):

微軟 Windows的SMB driver:srv.sys裡的SrvOs2FeaToNt函式被發現在執行memmove時
會因為邏輯不正確導致記憶體越界拷貝,以下是觸發點:




第一個紅框內的 pOs2Fea 在此被轉型成 _DWORD
但進入while loop後,在第二個方框處
微軟的Engineer不知為何又把他強制轉為比較小的 _WORD
如此一來非常容易造成拷貝記憶體時越界而寫到到 NONPAGED_POOL並導致BSOD



有心的攻擊者可以發送有此漏洞的機器一個帶有shellcode的SMBv1封包
此shellcode可能是用 Pool Spray的方式觸發漏洞、讓他可以任意執行程式碼
Pool Spray後、該shellcode的運作方式如下:

1. 判斷對方的 Windows platform, x86 or x64
2. 從KPCR裡尋找IDT、找出ExAllocPool、ExFreePool和ZwQuerySystemInformation 的BaseAddress
3. 呼叫 ZwQuerySystemInformation、用SystemQueryModuleInformation參數列舉每個Module的資訊 、找出srv.sys的位址
4. 修改對方機器srv.sys的 SrvTransaction2 Dispatch Table裡的 SrvTransactionNotImplemented、把他替換成自己的function


被修改前:


被修改後:



我們可以看到被fffff880`0357a6d0 的 SrvTransactionNotImplemented 被修改成攻擊者替換掉的函式 fffff880`01b8c060
因為沒有symbol所以Windbg無法顯示他的函式

更詳細的分析請見以下系列文:

Wannacry病毒深度技術分析(一)-傳播篇
Wannacry病毒深度技術分析(二)-系統漏洞篇
Wannacry病毒深度技術分析(三)-漏洞利用篇
Wannacry病毒深度技術分析(四)-佈局篇