0x00 序


ASIACCS 2015 全稱為10th ACM Symposium on Information, Computer and Communications Security。因為ASIACCS在ACM還有個兄弟會議叫CCS (ACM Conference on Computer and Communications Security), 又因為會議舉辦地點幾乎都在亞洲,于是縮寫就變成了ASIACCS。今年的會議一共有269篇paper投稿,48篇被accepted,中稿率為18%。

在討論會議內容前,我先簡單科普一下計算機安全領域會議的一些基本概念(學術界大牛可以直接跳過看下一章)。

0x01 計算機安全會議(學術界)概念普及


1. 每個會議發出論文邀請以及會議的主頁,并列出了投稿主題和興趣,以及截止投稿時間。每個學術會議一般一年舉辦一次,最有名的學術界四大安全會議為S&P(又稱Oakland),Usenix Security,CCS和NDSS (排名分先后)。

2.研究員在截止日期之前提交論文。每個會議通常會收到100至300篇論文投稿,語言必須為英文,每篇論文包含等同于8-15頁雙欄或者20-40頁單欄的文字量(包括引用)。有的會議還接受short paper(短篇論文),比full paper(完整論文)大概少一半的文字量。

3.Program Committee(會議程序委員會) 由大約20 – 50位專家學者組成。每篇文章會被三到五個人評審,這些人要么是PC成員,要么是由PC成員邀請的志愿外部審稿專家。審稿過程會持續約1-3個月左右。

4.在所有PC成員完成審稿后,PC會參考審稿人的建議開會決定接受哪些論文和拒收哪些論文。比較好的會議的中稿率都會在20%以下,二流會議的中稿率大概在20%-30%之間。隨后PC向所有作者發email通知他們是否接受其論文,并附上審稿意見。因為這些相對較低的接受率,一篇論文在被接受發表之前被拒收,修改,重新提交數次是不奇怪的,這個過程可能會花費數年。(一篇文章在同一時間只能被提交到一個會議。)

5.論文被接受的作者一般會要求在一個月之內提交Camera ready(終稿)。隨后大概在結果出來之后的2-3個月左右去參加會議,并做一個關于其論文的30分鐘的報告。所有被接受的文章都會被在線收錄到數碼圖書館(比如ACM library和IEEE library)。

6.會議舉行的目的不光是為了作者們的演講報告,也是一個學術界進行social(社交)的主要形式。除了作者們的報告,PC還會邀請業界的名人做keynote speech(專題演講),并舉行晚宴。在會議中你可以見到其他大牛和同行,并和他們進行交流。并且會議的舉辦地點會在世界各地,所以也是一個出國旅游的好機會。

7.如果還有興趣繼續了解計算機方面的會議和PhD的生活,可以去讀一本叫The Ph.D. Grind的書。 下載地址:http://pgbovine.net/PhD-memoir.htm

0x02 ASIACCS2015總結(移動安全部分)


本次ASIACCS一共收取了5篇移動安全方向的論文,我會一一進行講解。

1 Towards Discovering and Understanding the Unexpected Hazards in Tailoring Antivirus Software for Android


作者首先提出安卓上的殺毒引擎AVDs(Android Virus Detectors )有著很高的查殺率(95%),并且他認為擁有高查殺率的原因是殺毒廠商的病毒庫非常完善。但是他發現殺毒軟件的掃描并不是實時的,并且現在有大量的malware采用了動態加載技術,因此,如果殺毒軟件不能在病毒加載惡意payload的時候進行掃描,它是無法獲取到病毒特征并查殺到這種采用動態加載技術的病毒的。為了論證這一點,作者做了大量的實驗來測試在google play下載量最高的30款殺毒軟件,并發現了很多bypass掃描的方法。他把各種bypass的方法稱為Hazard。最有趣的Hazard是:作者首先構造一個復雜的zip tree文件(也就是zip里面包含zip,這樣連續套好幾層的大zip文件)放在sdcard下面,然后觀察CPU的狀態,作者發現這個zip tree文件可以讓很多殺毒軟件delay很長時間,甚至可以對某些殺毒軟件進行DOS (denial of service)攻擊。另外作者還發現,在殺毒軟件升級的時候會出現null-protection window (無防護時間窗口),病毒可以通過監聽系統廣播(比如Package_REMOVED,Package_REPLACED等)來找到合適的null-protection window,隨后動態釋放payload,執行惡意代碼。文章隨后作者給出了一些意見給殺毒廠商以及Google。

(此段非論文內容)關于系統廣播這一點,我去年在美國實習的時候發現了一個非常有趣的現象,不知道算不算bug:1. 新安裝的app是處在一個stopped state的,在這個state下的app是無法接收任何廣播的 (1],但是如果是一個updated app,并且original app不在stopped state,這個updated app是可以接收廣播的。2. 新安裝的app,包括updated app是無法接收自己的PACKAGE_ADDED這個廣播的 (2],但是在安裝過程中,updated app卻可以收到original app的PACKAGE_REMOVED廣播!打個比方,一個人的還在出生的過程中,卻可以聽到前世死掉時的聲音,真的是非常詭異。這個機制可以用來干什么呢?好的方面,他可以解決殺毒軟件的無防護時間窗口問題,當殺毒軟件update后可以通過接收PACKAGE_REMOVED廣播立刻啟動殺毒應用,而不用等待用戶去手動啟動殺毒軟件或者重啟手機。壞的方面病毒也可以配合master key漏洞,做到替換某個app后立刻執行惡意行為而不用等待用戶去手動點擊app或者重啟手機。該bug在4.4版本以及之前版本都測試通過,并寫信通知了Google,但不知道Google是否打算修復這個問題。

2 Hybrid User-level Sandboxing of Third-party Android Apps


作者首先介紹android上的app經常會獲取過多的權限,并且在用戶無意識的情況下泄漏個人隱私信息,并且現在的惡意app很多都是在native層實現惡意行為,傳統的針對dalvik層的hook防護機制已經不那么有效了。因此作者提出了AppCage這個系統。這個系統可以對原app進行重打包處理,然后在android上實現dalvik層和native層的雙重sandbox機制。首先講解的是dalvik層的sandbox,實現方法是hook dalvik虛擬機。因為dvm會在內存中維護一個ClassObject的數據結構,通過這個數據結構可以找所有方法的引用。因此AppCage會hook一些比較危險的方法(比如發送短信的方法),如果一個App調用了這些方法,AppCage會彈出對話框來詢問用戶是否同意執行,如果同意了,AppCage才會調用原方法執行。接下來作者介紹了native層的sandbox。首先我們知道在native層動態修改dex層的code已經是一種很成熟的技術了,通過native層的sandbox可以有效的防止native層的code篡改內存中dex的code。其次,native層的sandbox還可以監測和阻止危險的指令比如system call(系統調用)。對于app本身的native code,AppCage具體的實現方法是采用binary rewrite的方式,因為假設無法獲取原app的源碼,所以需要先反編譯原native library,隨后對代碼進行插樁來保證native code無法修改或執行除了sandbox分配的內存空間以外的數據,同時還可以監控system call的調用。針對android系統的library,AppCage采用了NaCl compiler sandbox了對應的系統library(比如libc.so),并且讓app在運行前加載sandbox過后的system library。針對JNI,AppCage采用hook dlopen和dlsym方法來解決dalvik和native的context不同的問題。在系統實驗部分,作者下載了google play前50的app以及一些malware進行了測試,實驗證明AppCage不光成功的阻止了某些app的危險行為,并且重打包后的AppCage app無論是在運行效率方面還是在文件大小方面都處在可接受范圍之內。

這篇paper的一作是Yajin Zhou (3],他來自北卡州立大學的Xuxian Jiang教授的團隊。如果你經常看android安全方面的論文,那你一定看過Jiang教授團隊的paper,他們的論文無論是引用數還是質量方面都是世界上最頂尖的。

3 On Designing an Efficient Distributed Black-Box Fuzzing System for Mobile Devices


這篇paper主要講述了如何在android和iOS上進行黑盒fuzzing來找漏洞。作者提出了一個系統叫MVDP (Mobile Vulnerability Discovery Pipeline),這個系統可以用來生成圖片,音頻和視頻文件,然后分發到相應的設備上(android/iOS),隨后收集崩潰信息(crash report)。作者首先提出,想要做好fuzzing最重要就是要有好的種子文件(seed file),作者采用的方式是先用搜索引擎在網上下載各種候選種子文件,然后使用SFAT(種子文件分析選擇器)去分析種子文件的數據結構,如果這個種子文件包含的數據越豐富分數越高,越會被選中。選好seed file之后,就會進入種子模糊環節,在這個環節中系統的Fuzzing Engine會對種子文件進行變異處理,比如刪除,增加或修改一些種子文件中的數據,隨后會使用評估工具對模糊后的種子文件進行打分,越具有獨特性的種子文件評分越高。接下來,MVDP系統會將種子文件傳送到目標機器上并打開,然后收集crash report,最后再分析crash report來發現漏洞。作者的實驗一共持續了2周,大概觸發了1900個crash report并發現了7個漏洞,不過這些漏洞還沒有嚴重到發CVE的程度。

4 XiOS: Extended Application Sandboxing on iOS


這篇paper主要介紹了一種新的sandbox iOS app的方法,用來防護比較流行的iOS上的攻擊手段(比如Usenix Security上提出Jekyll app)。作者首先介紹了幾種比較流行的iOS攻擊手段,比如iOS app采用動態加載調用private API,或者故意上傳有漏洞的app到App Store,然后采用ROP的方式觸發并利用漏洞等。為了防止這類攻擊,作者提出了XiOS這個系統,這個系統采用binary rewrite的方式,對已經編譯好后的iOS app加入sandbox,然后重打包后的XiOS app可以上傳到App Store或者采用企業證書發布。XiOS的防護手段主要是采用instrumentation的方式hook了動態加載的API調用,隨后所有的動態API調用都會經過XiOS的Reference Monitor檢測,如果這個API在允許列表里才會執行。同時XiOS還加入了一些防護機制用來防止app篡改Shadow Table,也就是XiOS用來保存數據的區域。

這篇paper思路幾乎和AppCage如出一轍,只是AppCage是android上的sandbox,XiOS是iOS上的sandbox。還有個不同點是AppCage是讓用戶在app運行中進行選擇,XiOS是基于自定義規則進行防護的。但是因為這兩種sandbox都是在用戶層實現的,如果針對他們的hook做防護的話應該是可以bypass的。

5 Enpublic Apps: Security Threats Using iOS Enterprise and Developer Certificates


這篇paper主要介紹了iOS上一種最近非常流行的安全威脅:利用開發者證書或者企業證書來分發iOS app。作者剛開始提到iOS上的病毒比Android上要少很多,并認為這主要是App Store嚴格審核的功勞。雖然有些論文提出了bypass審核的方法,但施行起來都比較復雜。隨后作者提出了一種非常簡單的bypass的方式,也就是利用開發者證書或者企業證書來分發iOS app。雖然蘋果不允許企業app被非工作人員使用,但是有很多公司的確在利用企業證書分發app,作者把這類app稱為enpublic app。Enpublic app大多都是通過itms協議來安裝的,作者利用搜索引擎可以在網上找到大量的enpublic app,通過分析app的歸屬地發現這些app大多來自美國和中國。隨后作者講述了如果獲取private API列表,然后通過列表判斷enpublic app是否使用了private API。接下來作者還對enpublic app的URL scheme進行fuzzy測試,來測試是否有URL漏洞。作者最后總結出了25個危險的private API調用,并且發現絕大多數的enpublic app都會調用private API。另外作者還發現了2個zero-day的漏洞并提交給了apple,apple在7.1修復了用戶監控漏洞(CVE-2014-1276),并打算在未來版本中修復釣魚漏洞。PS:這篇paper中提到的釣魚漏洞和URL漏洞可以參考(4]和(5]這兩篇文章。

0x03 花絮


今年ASIACCS的舉辦地是在新加坡,是一個非常熱非常小的國家(接近赤道)。會議一共是4天,第一天報道和workshop,隨后三天開主會。新加坡最有特色的地方就是魚尾獅和金沙酒店上面的露天游泳池了。最好吃的東西當然要屬辣椒螃蟹和肉骨茶。如果去新加坡旅游千萬不要錯過。最后附幾張照片。

enter image description here

0x04 總結


從今年的ASIACCS論文(移動安全方向)來看,iOS已經開始變成一個熱門topic了,因為iOS的paper還非常少,有很多坑可以挖,在未來2年一定是個大熱。再看android方面,malware相關的paper已經越來越少,漏洞挖掘以及完善AOSP系統開始變為主流。WP方面依然冷清,幾乎沒人研究。最后附上5篇移動安全的論文下載地址(6],有興趣的同學可以繼續研究。

0x05 參考文獻


  1. stopped state http://developer.android.com/about/versions/android-3.1.html

  2. PACKAGE_ADDED Intent http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED

  3. Yajin Zhou https://scholar.google.com/citations?user=N1oeOPwAAAAJ

4.在非越獄的 iPhone 6 (iOS 8.1.3) 上進行釣魚攻擊 (盜取 App Store 密碼) http://blog.csdn.net/zhengminwudi/article/details/43916791

5.iOS URL Scheme 劫持-在未越獄的 iPhone 6上盜取支付寶和微信支付的帳號密碼http://drops.wooyun.org/papers/5309

6.論文打包下載 http://www.cse.cuhk.edu.hk/~mzheng/paper/asiaccs2015.zip

您的支持將鼓勵我們繼續創作!

[微信] 掃描二維碼打賞

[支付寶] 掃描二維碼打賞