HITCON 2011 筆記 (HIT)

參加 HITCON 2011 (Hacks in Taiwan Conference 台灣駭客年會), 學習到不少有趣的東西.

對於 Android 的認識, 經過 Thinker、Jserv 的解說, 對於程式開發會很有幫助. 🙂

HITCON 2011 筆記

先把現在還記得的寫下來, 今年的主題主要是 防毒軟體 + Sandbox + 雲端, Android, APT (Advanced Persistent Threats, 進階持續威脅) 等.

APT (Advanced Persistent Threats, 進階持續威脅)
  • 簡單講, 就像在看電影, 一連串的事件都是有 原因/因果 的.
  • Xecure Lab.
  • APT: 有計劃, 有組織, 有針對性的網路間碟活動.
  • APT 通常針對 政治, 軍事... 等重要資料, 有計劃性的入侵行為.
  • APT 必須要看一系列的事件, 而不是單一的攻擊事件. (一群事件的處理)
  • APT-Deezer  - 線上快篩服務 快速檢驗是否為 APT 惡意文件 (使用數學模型 - Rough Set Theory 描述 APT 的 Grouping)
  • APT 惡意郵件不能只是做一般病毒信件處理而敷衍過去.
Android 加密 與 逆向工程
  • apktool: http://code.google.com/p/android-apktool/
  • dex2jar http://code.google.com/p/dex2jar/
  • Jad / jd-gui java.decopiler.
  • smali http://code.google.com/p/smali/  - 推薦
  • Dalvik opcode list
  • DexOpt (vertify and optimzie all of the classes in the DEX file)
  • 應用程式會走 JDWP 的 Protocol, 所以使用 此 Protocol 來抓取資料.
  • adb forward tcp_29882 jdwp:291
  • DDMS: Dalvik Debug Monitor Server - 圖形化的工具, 比 adb 易懂.
  • Android 執行檔 - DEX, Bytecode (0~255)
防毒軟體 + Sandbox + 雲端
  • MD5 變形
  • 自我膨脹, 自動把照片、影片都拉進此文件, 讓上傳雲端檢查速度變慢.
  • Sandbox 本身是個好防護, 但是被破解的話, 嚴重性更大

投影片: HITCON 2011 投影片下載

APT Secrets in ASIA - 亞洲的 APT 奧義 - Anthony Lai
  • http://blog.xecure-lab.com
  • http://www.chroot.org/
  • APT: 有計劃, 有組織, 有針對性的網路間碟活動.
  • APT 通常針對 政治, 軍事... 等重要資料, 有計劃性的入侵行為
  • RSA SecurID token 被偷 2011/3/18
  • DoD: APT 偵測與防護是資訊戰基石
  • 駭客喜歡攻擊立委的秘書, 都是他在幫忙看信.
  • APT 是多種面向攻擊路徑
  • APT(有組織有計劃的間碟活動) vs Crime-Group (大規模散步惡意程式以竊取個資)
  • RAT: 後門程式
  • APT Mail = Document Exploit + Malware
  • APT 最常被觀察到的活動(Targeted-Attack Email): Phishing mail(騙 id/pw), Malicious script(Web mail Hacking 探測環境), Drop Malware
  • 樹大有枯枝, 人多有白痴
  • APT 必須要看一系列的事件, 而不是單一的攻擊事件. (一群事件的處理)
  • 分析 APT 樣本中的行動與武器特徵, 找出 APT 駭客集團的特徵與習慣
  • 不僅只分析 Malware 特徵, 也要包含 Exploit, C&C Network, 原始攻擊的 Email, 被攻擊者的背景分析
  • 使用數學模型 - Rough Set Theory 描述 APT 的 Grouping
  • 樣本分析: Static Approach 根據檔案格式取出特徵進行比對
  • Dynamic Approach
  • 系統分析的難題: 加密, 遇到 Sandbox 不執行, 5分後, 1周後才執行
  • 取出 特徵組出 APT Attributes
  • Document -> Xecute Engine -> APT Attributes -> APT Groups -> APT Taskforce Databse
  • http://contagiodump.blogspot.com/ - 這個網站有很多 APT 的樣本
  • 公開且開放, 而且可以重複驗證.
  • Top 3 APT Taskforce Groups: C&C Taiwan 28.81%, US 11.85%, HK 8.47%, China 6.78%, Canada 6.78%.
  • APT-Deezer http://aptdeezer.xecure-lab.com - 線上快篩服務 快速檢驗是否為 APT 惡意文件
  • 目前支援 DOC, PPT, XLS, PDF, RTF
  • COMODO 簽章被偷
  • APT 惡意郵件不能只是做一般病毒信件處理而敷衍過去.
  • 攻擊事件將一再發生.
Android 應用程式逆向工程提示 (Android Application Reversing Essence) - Jserv
  • Practice of Android Reverse Engineering
  • ODM, 逆向工程, 拿到 Source code 的時間, 比預期還要久.
  • 產品出貨, Source code 還沒拿到.
  • 後製處理 做 optimization
  • 我的字典裡沒有放棄
  • 開發流程, Reverse Practice, Real world tasks
  • unzip xxx.apk - AndroidManifest.xml, resources.arsc, classes.dex, lib/armeabi/libangrybirds.so (JNI)
  • META-INF/MANIFEST.MF - sha1
  • android-apktool
  • - apktool d xxx.apk - 將 binary 轉乘 xml
  • - adb logcat -c
  • - adb install -r xxx.apk
  • - adb logcat
  • DexOpt (vertify and optimzie all of the classes in the DEX file)
  • adb shell am start -e debug true -a android.intent.action.MAIN -c android.intent.category.LUNCHER -n org.jfedor.frozenbubble.Fz...
  • Binder Driver (/dev/binder)
  • adb shell dumpsys | grep -i bubble
  • Activity Manager - 看的到的叫 Activities, 看不到的叫 Service.
  • ANR (Application Not Responding) - 多久系統沒有回應, 就沒辦法再追蹤
  • Android is Multi-thread.
  • use JDB to Trace Android Application.
  • JDWP: Java Debug Wire Protocol
  • 應用程式會走 JDWP 的 Protocol, 所以使用 此 Protocol 來抓取資料.
  • - adb forward tcp_29882 jdwp:291
  • > threads - 看到目前系統的 thread.
  • DDMS: Dalvik Debug Monitor Server - 圖形化的工具, 比 adb 易懂.
  • - hierarchyviewer: Traverse widgets, 可以邊看畫面, 邊逆向追蹤.
  • - Decompile / Disassembly
  • - 跳過某些檢查.
  • 工具
  • - apktool: http://code.google.com/p/android-apktool/
  • - dex2jar http://code.google.com/p/dex2jar/
  • - Jad / jd-gui java.decopiler. ..
  • - smali http://code.google.com/p/smali/
  • - 推薦 smali .
  • smali 使用
  • - mkdir workspace smli-src
  • - cd workspace
  • - unzip *.apk
  • - 程式碼會放在 classes.dex
  • - bin/baksmli -o smali-src workspace/classes.dex
  • - R$string.smali - R: resource
  • - grep "\.method" org/jfedor/frozenbubble/LevelManager.smali
  • - 修改 constructor
  • - super: 他繼承誰
  • - 修改後, 用 smali 重開, 再重包
  • Tasks
  • - Tasks - ODEX (Optimized DEX), JNI - JNIEnv, Native Activity, Key signing.
  • - http://www.androidengineer.com/2010/07/optimizing-obfuscating-and-shrinking.html
  • 如何避免 Dex 被逆向工程的風險
  • - 綁 Sense UI, 綁平台
  • - 把程式的一部分功能放到雲端.
  • http://jserv.blogspot.com/2010/05/android.html
Android 執行檔注入與資料防護 - Thinker
  • code injection and data protection
  • 誼智科技
  • 沒有完全安全的系統 (no safe system)
  • DroidDream
  • 偵測 (detect & defense) - virus / malware scanner
  • 避免 (avoid) - 沙箱 (sandbox)
  • FAT 是沒有權限的, 所以 Android 在 SD Card 上是很難顧及安全性的.
  • 工具注射 過濾和編碼
  • 針對 檔案, DB, 網路存取做加解密, 將應用程式關在一個安全環境, 將 sandbox 反過來應用.
  • Android 執行檔 - DEX, Bytecode (0~255)
  • 執行檔格式: $(ANDROID_TOP)/dalvik/libdex/DexFile.h
  • Add / Inject New Classe: ClassDef, ClassData, Field, Method
  • 有效隔離企業網路 - 注入程式碼: Wrap file I/O, Wrap network I/O, Wrap database access
  • - Project: paraspace, hg clone http://hg.assembla.com/paraspace
  • - file I/O (done), Network I/O (T.B.D), Database (T.B.D)
  • - 加密的 key 目前是 embed 到執行檔裡面.
  • - Reference: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html , dalvik/libdex of Android, paraspace
  • mapOffset
  • - python codedump.py hello.dex
  • - 解開 apk, 取出 dex file, 在 redirect 加工.
手機見識技術及實務分享 - 黃敬博 po@iforensics.com.tw 鑑真數位有限公司
  • Smart phone 會遠超過 PC
  • SIM / Handset / Memory Card
  • Handset - 手機裡面的記憶體.
  • Android 底層的 Driver 都不一樣.
  • 手機畫面, 按一下拍一張. XD
  • Manual Extraction, Logical Analysis, Hex Dump, Chip-Off, Mico Read
  • Physical Extraction Tool: XACT
  • live boot for mobile + dd
  • Remote wipe
  • wipe iphone key 就解決了.
  • 將訊號遮蔽, 防止去 mobile me 把 key wipe 掉.
  • Consolidated.db - GPS 記錄所有軌跡.
  • use XRY map to Google Earth.
  • Android JB, Super One Click
  • 影片 Root 教學
  • Full NAND Backup - Recovery ROM
  • decode dd 出來的 DMG, 如何讀取. EnCase V7 Mount
  • 有預算和沒有預算的推薦軟體.
  • 於 ppt 倒數第二頁
  • XRY 會把座標也都取出來, 所以可以用 Google Earth 讀取畫出來.
  • iPhone - GPS 每 5分鐘定位一次.
  • 有 Budget: XRY Office Complete, UFED _ Physical Pro, EnCase
  • 沒有 Budget: XACT (Free downloaded from XRY), iFunbox / SuperOneClick, SQLite / Plist Editor, FlashBox
  • iPhone 4.3.2 前 GPS 打卡是 unLimit, 4.3.3 以後是有 Limit 的.
  • iPhone 記錄在 Consolidated.db - 砍掉這個就可以了.
  • 需要 JB
Reversing Android Malware - yomuds
  • MyCERT, CyberSecurity Malaysia
  • Infecting legitmate apps
  • - Mod app with malicious code (Geinmi, DreamDroid, ADDR)
  • - Upload to "Market" or 3rd party hosting
  • Exploting Android's (core/apps) bugs
  • Fake apps - DreamDroid's removal tool
  • Reversing Android Malware
  • APK - Can extract .DEX file.
  • Reversing and interactive debugging is possiable - ADB
  • Building Process: *.java -> javac -> *.class -> dx (dexer - Dalvix's format) -> *.dex class
  • Reversing Process: *.dex class (Disassembler: Baksmali / Dedexer / undx -> *.class -> *.java
  • Tools: Dedexer, Baksmali, Undx, Dexdump (dumping *.dex file, from Android SDK)
  • Assembler - to convert to original Dalivik VM bytecode (smali)
  • dex2jar
  • Android Manifest.XML - Permission request, Entry poing
  • 行為都定義於此.
  • Tracing function calls: XREF
  • Dalvik Bytecode - http://android.git.kernel.org/?p=platform/dalvik.git;a=tree
  • http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
  • (Based on Gabor's RE on .dex bytecode)
  • .class: public final com/xxx/xxx (a class file)
  • Case study
  • DreamDroid
  • udevRoot
  • adbRoot
  • RE #2: GoldDream
  • 竊取資訊: SMS, Phone(call) activity
  • Files: /data/data/com.gamelio.DrawSlasher/files/zjphonecall.txt, zjsms.txt
  • Botnet capability: Send sms -> Get task from server -> Call phone number -> Get value from server -> Start service -> Upload file
  • RE #3: ZeusDroid
  • Part of bigger financial malware package: Zeus
  • ZITMO
  • just steal mobile banking SMS only.
  • Issues
  • Decompiling - convert native Dalvik to Java, Dex2jar
  • Conclusion
Current Trends in Web Security Attachs and Best Practices to Stop Them - M86 Security, Terry Leung
  • Malware: 1. USA (3x%), 2. China
  • Web Crimeware
  • Exploit Kits: Neosploit, Phoenix, Blackhole, Incognito, Eleonore, Bleeding Life, SEO Sploit, CrimePack, Intoxicated, Siberia
  • Web2.0: Creating a Fertile Ground for Attachks
  • 把 Facebook 當 msn 使用.
  • 54% Attachks 在 24hr 後, 就變種了.
  • AV scanning.
  • URL filter.
  • Real-Time Code Analysis - Fetch Code 產生的動作.
  • Dynamic Malicious Code - 每次連過去看到的 Code 都是不一樣的, 所以 AV Scanners 很難抓到.
  • 解編碼, 看這些程式到底是做哪些事情, 虛擬執行, 依照結果來看是否是有問題的 Code.
  • Real-Time Content Analysis - malicious PDF file.
  • Real-time Code Analysis - 將 Code 分類, 執行會做什麼事情, 將有問題的 Script decompile 並移除.
  • Effective Security Strategy: Anti-virus scanning (AV), URL filtering, Real-time code analysis
  • m86security.com
針對性惡意程式攻擊趨勢 - Nart Villeneuve (TrendMicro)
  • Trends in Targeted Malware
  • FakeAV
  • Affiliates (PPC)
  • GhostNet
  • ShadowNet
  • 使用 res:// protocol.
  • PDF load iframe.
  • C&C: Command and Control
Escaping From Auto Sandboxes - MJ0011(鄭文彬) - 360安全衛士
  • th_decoder@126.com
  • Windows kernel
  • 系統級沙箱弱點及逃逸技巧
  • 系統級沙箱: 隔離可疑程式或易受攻擊的程式
  • Api Hook
  • 沙箱中惡意程式逃逸後的安全問題: 比普通惡意程式更嚴重, 虛擬化可能使其他防禦機制失效
  • Avast!沙箱弱點和逃逸: 進程行為防護可被繞過
  • SSDT Hook: 參數檢查的疏漏, BSOD Hook
  • 沙箱的 SSDT Hook 中, 由於要改寫訪問資源的最終路徑, 參數檢查疏漏將可能導致內核任意位址寫入漏洞, 沙箱中任意許可權進程可以直接在內核態運行代碼
金山雲體系
  • 10大病毒集團, 產業鏈
  • 哪個集團丟出來的病毒, 知道是哪個集團後, 就知道大概會有多少人中毒.
  • 黃飛鴻集團 - 色情播放器
  • 產業鏈的特徵自動提取系統, 假日休不休息. XD
  • 春節休息, 其他假日他們比我們忙.
  • 邊界防禦
  • Browser, IM, Download, MailBox, P2P, USB, Intranet 與外部溝通的機會, 這些都會做邊界防禦的 Scan.
  • 主動防禦
  • 明明知道有毒, 但是還是要執行 - 用戶的需求是擋不住的. XD
  • 惡意文件: 色情播放器, 外掛, KeyGen, ebook
  • 金山看片不中毒++
  • 金山外掛運營 - 真的去玩, 沒有用會通知使用者. XD
  • 金山沙箱 (KeyGen...), 安全沙箱
  • 一鍵雲查殺 - 活體查殺, 重開後還活著.
  • Boot - 非白即黑
  • 99秒雲鑑定
雲安全體系下的安全技術對抗 - 張文君 (Junzz)
  • 雲對抗 - 手法 -- 把網路斷線就好了.
  • 膨脹自身 - 讓病毒上傳上去要很久, 就會有時間差可以做事.
  • MD5 變形
  • BootKit, Bat, Vbs, MSi
  • 斷網 - Script, 修改 DNS, route, IP組, TcpEntry, 增加 IP, LSP, Hook TCP/IP, NDIS中間曾
  • 切斷 Client 雲端
  • 切不斷的話, 修改雲端返回結果.
  • QvodPlayer.exe
  • Hook TCP/IP
Wargame
  • arp -s 10.0.15.1 00:50:56:11:22:33

關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note 並標籤為 , 。將永久鏈結加入書籤。

HITCON 2011 筆記 (HIT) 有 4 則回應

  1. Jimmy 說道:

    Hi Tsung sirs
    一件事不知能否請教?
    目前我正在寫一各android的功能叫onKeyDown
    我想要在長按音量鈕(>3秒)後能夠啟動一各class(在下面的程式碼中我先以toast代替這各class)
    由於要能夠長駐背景
    所以我把偵測長按音量鈕的程式碼放在service裡面
    不過程式執行到onKeyDown()這一段沒有反應,
    我還在onkeydown()後面放了一各ff()測試,這ff()是會被run然後跳出"測試ff是否被執行",
    這代表在我的程式碼中,onKeyDown()無法執行
    可以請教您這是什麼原因嗎?
    謝謝
    Jimmy
    ===========================================
    package com.myvoulume;

    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.view.KeyEvent;
    import android.widget.Toast;

    public class MyVolumeBackground extends Service {

    @Override
    public IBinder onBind(Intent intent) {
    return null;
    }
    public void onCreate(){
    super.onCreate();
    Toast.makeText(this, "On Create...", Toast.LENGTH_SHORT).show();
    }

    public void onStart(Intent intent, int startID){
    super.onStart(intent, startID);
    Toast.makeText(this, "On Start...", Toast.LENGTH_SHORT).show();
    onKeyDown(startID, null);
    ff();
    }

    public void ff(){
    Toast.makeText(this, "測試ff是否被執行", Toast.LENGTH_SHORT).show();
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP){
    Toast.makeText(this, "按下了上音量鍵", Toast.LENGTH_SHORT).show();
    return true;
    }else if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){
    Toast.makeText(this, "按下了下音量鍵", Toast.LENGTH_SHORT).show();
    // return true;
    }
    return true;
    }

    public void onDestroy(){
    super.onDestroy();
    }
    }
    ===========================================

    • Tsung 說道:

      我是不太確定原因是什麼, 畢竟我沒寫過你講得這種.
      但是我似乎有看到一點點怪怪得, 不知道對錯, 您參考看看.
      public 有 "KeyEvent event"
      在下面得判斷, 為何是用 KeyEvent.KEYCODE_VOLUME_UP ?
      是否應該用 event.KEYCODE_VOLUME_UP?

  2. Jimmy 說道:

    Dear Tsung sir
    thank you for reply,
    用KeyEvent.KEYCODE_VOLUME_UP因為這是KeyEvent classes中的方法,如下http://developer.android.com/reference/android/view/KeyEvent.html
    ,另外,您知道在背景偵測長按電源鍵的方法嗎?
    謝謝你阿

發表迴響