User-Agent Switcher後門解析

黑魔法防禦術系列講座

Google Chrome擴充套件

今天,我們來講講後門

察覺後門

確認後門

拆解後門

阻止後門

撰寫後門

Ethen @ VSSecurity

Security Consultant

Defense / Forensic / Analysis

SOC "Tier All" Engineer

Developer

 

Free and Open

 

 

ethen@anotherdream.tw

每月講座

公開講義

教你如何在黑魔法滿天飛的世界自保

基礎概論

主堡防禦

戰場規劃

戰情分析

CSI

進階防禦

線上講義

goo.gl/gA7KNd

FB

goo.gl/GCpY2y

投影片

goo.gl/P3tDPV

程式碼

goo.gl/q5xtt7

backdoor (後門)

後門是一種惡意程式碼,一旦安裝在系統上,攻擊者便可以繞過正常的安全性存取控制存取系統。

又稱為設陷門。取得程式、線上服務或整個電腦系統的存取權限的非正式方法。建立威脅程式的程式設計師也編寫後門程式碼。通常只有程式設計師知道後門詳細資料。後門是潛在的安全性風險。

取得程式、線上服務或整個電腦系統的存取權限的非正式方法。建立威脅程式的程式設計師也編寫後門程式碼。通常只有程式設計師知道後門詳細資料。後門是潛在的安全性風險。

https://www.symantec.com/zh/tw/security_response/glossary/define.jsp?letter=b&word=backdoor

危險性、用法、來源...

http://slideplayer.com/slide/5902203/

偵測

CnC連線通訊 - 流量分析 / 封包分析

社交工程 - HoneyPot / APT設備 / 內容分析

植入本體 - 鑑識調查 / HostIDS / 防毒軟體

惡意行為 - SOC感知 / HostIDS

行為分析

動態分析

靜態分析

乾淨的虛擬化環境

好用的文字編輯器

瀏覽器的除錯工具

清醒的腦袋與 JS / 網路知識

Google

網頁掛馬 / 瀏覽器外掛分析

https://blog.longwin.com.tw/2014/01/chrome-extensions-plugin-develop-2014/

background.js

background.js : 80

Title Text

網頁掛馬基本原則

抓取惡意程式碼(選項)

解碼(選項)

觸發Exploit(選項)

執行

aaa.bbb == aaa["bbb"]

aaa.bbb() == aaa["bbb"]()

'\x63\x6f\x64\x65' == "code"

a=1,b=2 == a=1; b=2

a==b && func() ==> if (a==b){ func(); }

return a(),b(); ==> a(); return b();

Function(n)() ==> eval(n)

[]["constructor"]["constructor"](n)()

JS常見混淆

覺得這夠靠北了?

AAEncode

還有呢

```

p=document.createElement("canvas2d”);

g=getImageData(0,0,width,height);

data = “”;

foreach (g as char) data+=char;

eval(data);

```

shellcode_js_extract.html

document.defaultView[(typeof r.Ae).charAt(0).toUpperCase() + (typeof r.Ae).slice(1)](n)()
=>

document.defaultView.Function(n)()
=>

eval(n)

=>

你可能會遇上一些鳥事

Chrome在讀取file://本地html檔案的時候,內部JS無法引用另一個本地file

shellcode_in_promo_jpg.txt

aaa.bbb == aaa["bbb"]

aaa.bbb() == aaa["bbb"]()

'\x63\x6f\x64\x65' == "code"

a=1,b=2 == a=1; b=2

a==b && func() ==> if (a==b){ func(); }

return a(),b(); ==> a(); return b();

Function(n)() ==> eval(n)

[]["constructor"]["constructor"](n)()

JS常見混淆

parsed_complete.txt

主要函數

f[ ]:主要變數定義(略為混淆)

g("xxx")從 f 撈取文字解碼

e({cat, act, lab})用 n 打一個訊息回CnC

n(url, action)進行XHR操作 

t(data, rot):對data進行凱薩密碼混淆

o(json_data):對Server回傳的數據解碼並更新本地儲存

a(data):執行data,檢查結果並回傳給CnC

r( ):安裝到Chrome儲存區 \ 檢查更新

i( ):主要進入點,發送"init"給CnC、更新、執行

c{ }:儲存變數

l { 'get', 'set', 'yJ', 'EE' }:Chrome本地儲存操作

執行流程

  • 解開部分混淆
  • 進入點 i
  • 通知CnC "init"
  • 檢查並安裝更新
  • 執行遠端程式碼
  • 之後每12小時檢查一次更新

取得遠端更新
https://the-extension.com/?hash=jwtmv6kavksy5cazdf4leg66r

 

XMLHttpRequest 通知CnC肉雞狀態

https://the-extension.com?hash=jwtmv6kavksy5cazdf4leg66r&eventCategory=eval&eventAction=init&eventLabel=
 

本地儲存 chrome.storage.local

  code: TjPzl8caI41

  version: KI10wTwwvF7

CnC_command.txt

察覺後門

確認後門

拆解後門

阻止後門

撰寫後門

取得遠端更新
https://the-extension.com/?hash=jwtmv6kavksy5cazdf4leg66r

 

XMLHttpRequest 通知CnC肉雞狀態

https://the-extension.com?hash=jwtmv6kavksy5cazdf4leg66r&eventCategory=eval&eventAction=init&eventLabel=

 

https://uaswitcher.org/splash

 

本地儲存 chrome.storage.local

  code: TjPzl8caI41

  version: KI10wTwwvF7

防火牆 / Proxy追蹤連線

如果有留封包,可以追蹤已經外洩了哪些資訊

阻擋 / 改寫連線指令 把肉雞劫走

丟指令給Chrome檢查儲存區

發布資安通報
...

下一步?

Yup, thats it.

Any question?

Chrome惡意外掛User-Agent Switcher分析

https://itw01.com/VGT7EKA.html

另一個解析

Plugin backdoor analysis

By Ethen Tso

Plugin backdoor analysis

Google Chrome外掛套件User-Agent Switcher後門解析

  • 2,248