SlideShare a Scribd company logo
1 of 40
Download to read offline
Mobile 開發
常⾒見見資訊安全介紹
賴俊安(Joey Lai)
.
. . . . . ()
2 2
第三⽅方Pokemon暗藏⽊木⾺馬
發現有惡惡意軟體開發者將遠端存取⽊木⾺馬 (Android.Sandorat)偽裝成Pokémon Go應⽤用
程式,散佈在多個下載網站和遊戲論壇供玩家下載。⼀一旦玩家安裝了了有⽊木⾺馬病毒的
Pokémon Go之後,攻擊者就獲得使⽤用者⼿手機的完全存取權限甚⾄至是信⽤用卡資料。
官⽅方APP 資安風險
reference
http://news.ltn.com.tw/news/politics/paper/1100473
Gogoro APP 遭破解
reference
http://www.setn.com/News.aspx?NewsID=166617
http://www.techbang.com/posts/44967-gogoro-three-funding-risk-inside-be-careful-all-internet-
products
OWASP
• 開放網路路軟體安全計畫,簡稱OWASP(Open Web
Application Security Project)
• 開放社群、非營利利性組織,全球⽬目前有82分會,主要⽬目標
是研議協助解決網路路軟體安全之標準、⼯工具與技術⽂文件,
長期致⼒力力於協助政府或企業瞭解並改善應⽤用程式的安全性
• 美國聯聯邦貿易易委員會(FTC)強烈建議所有企業務必遵循
OWASP所發佈的⼗十⼤大網路路弱點防護守則,美國國防部亦
將此守則列列為最佳實務,連國際信⽤用卡資料安技術(PCI)
標準更更將其列列為必要元件
OWASP Mobile Top 10
• M1不當使⽤用⾏行行動作業平台(M1 - Improper Platform
Usage)
• M2不安全資料儲存(M2 - Insecure Data Storage)
• M3不安全通訊(M3 - Insecure Communication)
• M4不安全⾝身分認證(M4 - Insecure Authentication)
• M5不⾜足夠的加密(M5 - Insufficient Cryptography)
OWASP Mobile Top 10
• M6不安全授權(M6 - Insecure Authorization)
• M7⽤用⼾戶端程式碼品質(M7 - Client Code Quality )
• M8程式碼竄改(M8 -Code Tampering)
• M9逆向⼯工程(M9 - Reverse Engineering)
• M10多餘的功能(M10 - Extraneous Functionality)
M1不當使⽤用⾏行行動作業平台(M1 - Improper Platform
Usage)
• 誤⽤用平台功能或平台安全控制使⽤用失敗(如
Android intents, permissions, Touch ID或
Keychain 誤⽤用)
M1不當使⽤用⾏行行動作業平台(M1 - Improper Platform
Usage)
• iOS
• iOS7以上螢幕在背景時快取縮圖
• 被存在(App Folder) /Library/Caches/
Snapshots/com.bundle.id.of.your.app/
• 使⽤用applicationWillResignActive來來蓋⼀一張圖或是清除機敏資訊
• applicationDidBecomeActive時還原
• Android
• 在登入畫⾯面避免被截圖
• getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
M1不當使⽤用⾏行行動作業平台(M1 - Improper Platform
Usage)
• iOS
• Networking Cache Policies
• HTTP或HTTPS的 request的URLCache
• (App Folder)/Library/Caches/com.bundle.id.of.your.app/Cache.db
• 清除Cache
• [[NSURLCache sharedURLCache]
removeAllCachedResponses];
• [[NSURLCache sharedURLCache] setDiskCapacity:0];
• [[NSURLCache sharedURLCache] setMemoryCapacity:0];
M1不當使⽤用⾏行行動作業平台(M1 - Improper Platform
Usage)
• Android
• 在正式環境的App應將android:debuggable=“false”
• allowBackup 設為false
• Intents 限制使⽤用
• 如service使⽤用android:exported=“false”
• 應只取⽤用需要之permission
M2不安全資料儲存(M2 - Insecure Data Storage)
• ⽤用⼾戶端裝置未適當保護機敏資料,例例如:機敏資
料(帳號、密碼等)未加密或誤認資料”編碼”即已
加密,因⽽而可能導致機敏資料外洩
M2不安全資料儲存(M2 - Insecure Data Storage)
• iOS
• NSUserDefaults儲存機敏資料在JB⼿手機可輕易易存取
• 鑰匙串串(Keychain)功能使⽤用iOS 7以上的版本時,若若惡惡意第三⽅方有機會存取到有
加密的iTunes備份,Keychain就有可能被破解
• 因為當iTunes備份被啟⽤用時,iOS會重新對Keychain進⾏行行加密,所以這時如果
惡惡意第三⽅方可以知道備份的加密密碼,那麼Keychain就有可能部分被解密。

• 此外,Keychain在有進⾏行行越獄( jailbreak)的設備上,其存取控管也可能會失
效。在有越獄的⼿手機上,任何的應⽤用程式都可能存取到別隻程式的Keychain內
容。⽽而對於那些本⾝身就含有Bootrom漏洞洞(Bootrom exploit)的舊設備(例例如
iPhone4),攻擊者可以藉由實體存取⽽而破解Keychain。
(Reference ⾏行行動應⽤用資安聯聯盟)
M2不安全資料儲存(M2 - Insecure Data Storage)
• 

• 當有使⽤用Keychain儲存資料時,開發⼈人員應使⽤用最嚴格的防護類別(可參參考
kSecAttrAccessible屬性),⽽而且使⽤用該種類別(class)完全不會影響到App本⾝身的
運作流暢度。例例如,若若你的應⽤用程式並不是設計於背景 (background)執⾏行行的,可
使⽤用kSecAttrAccessibleWhenUnlocked或
kSecAttrAccessibleWhenUnlockedThisDeviceOnly

• 若若要避免因iTunes備份讓Keychain曝光,可以使⽤用「ThisDeviceOnly」保護類別

•  對於⾼高度敏感的資料,可考慮使⽤用Keychain所提供的另⼀一種更更安全的保護機
制,即應⽤用程式層的加密機制。 例例如在進入應⽤用程式時,使⽤用者會輸入通⾏行行密碼
(passphrase)以進⾏行行認證,並在資料儲存到Keychain前,⽤用此通⾏行行密碼對資料進
⾏行行加密
(Reference ⾏行行動應⽤用資安聯聯盟)
M2不安全資料儲存(M2 - Insecure Data Storage)
• Android
• SharedPreference 儲存機敏資料在root⼿手機可
輕易易存取修改
• 使⽤用NDK儲存機密資訊
M3不安全通訊(M3 - Insecure Communication)
• 未以加密⽅方式傳輸機敏資料如HTTPS,或是SSL版
本不正確,SSL handshake不正確,可能導致的
攻擊有中間⼈人攻擊(Man-in-the-middle attack)導致
機敏資料外洩或遭竄改
pay.taipei 未使⽤用 HTTPS
Reference
http://www.techbang.com/posts/52151-pay-taipei-just-online-offline-
because-of-alert-data-is-not-encrypted
未使⽤用HTTPS
• 使⽤用者機敏資料暴暴露在⾼高度風險下(帳號、密碼)
• 中間⼈人攻擊(Man-in-the-middle attack)竄改傳輸資
料,造成個資外流、盜刷
未使⽤用HTTPS
• Apple 要求所有提交app store
的app必須使⽤用HTTPS連線
中間⼈人攻擊(MITM)
• reference
• https://www.incapsula.com/web-application-security/man-in-the-middle-
mitm.html
Certificate Pinning
• 把需要進⾏行行比對的憑證存在應⽤用程式,並且在進
⾏行行SSL Handshake時與伺服器憑證做比對
• 實作可參參考 http://devco.re/blog/2014/08/15/ssl-
mishandling-on-mobile-app-development/
M4不安全⾝身分認證 (M4 - Insecure Authentication)
• 使⽤用者驗證失敗、session處理理不正確等問題
M4不安全⾝身分認證 (M4 - Insecure Authentication)
• App應先進⾏行行驗證如Regular Expression
• 不只前端驗證,後端⼀一定要再進⾏行行驗證
• 若若使⽤用OAuth的token需要具有時效性,並且token
需要加密保存
• Session id長度在128bit以上確保不會遭暴暴⼒力力破解
M5不⾜足夠的加密(M5 - Insufficient Cryptography)
• 加密的⽅方式不正確或加密程度不⾜足導致破解之可
能
• 使⽤用不安全的演算法如RC2.MD4.MD5.SHA1
• 避免hardcode key在app裡
M6不安全授權(M6 - Insecure Authorization)
• 建議使⽤用TLS1.1以上的SSL協議
• 應由後端進⾏行行授權
M7⽤用⼾戶端程式碼品質(M7 - Client Code Quality )
• App程式碼品質不佳造成的問題,如buffer overflow. format
string等
• 緩衝區溢位(buffer overflow),是針對程式設計缺陷,向程
式輸入緩衝區寫入使之溢位的內容(通常是超過緩衝區能儲存
的最⼤大數據量量的資料),從⽽而破壞程式執⾏行行、趁著中斷之際並
取得程式乃⾄至系統的控制權。
• 使⽤用靜態分析⼯工具如Xcode static analyze. Android Lint進⾏行行
分析並且改善
• 市⾯面上⼯工具如fortify. checkmarx
M8程式碼竄改(M8 -Code Tampering)
• 透過以下⼿手法對程式進⾏行行竄改
• binary patching, local resource modification,
method hooking, method swizzling, and
dynamic memory modification
• 進⾏行行JB. root偵測並且混淆,若若偵測JB. root進⾏行行
相應動作
JB偵測
Reference
⾏行行動應⽤用資安聯聯盟
拒絕Debug模式執⾏行行
Reference
⾏行行動應⽤用資安聯聯盟
M9逆向⼯工程(M9 - Reverse Engineering)
• 透過逆向⼯工程將可了了解程式式如何運作以及進⾏行行
分析造成風險
• iOS
• 透過⼯工具如 IDA Pro, Hopper, otool, 對binary檔案
進⾏行行 decompile等進⾏行行反組譯,class-dump查看
class. category. protocol等
M9逆向⼯工程(M9 - Reverse Engineering)
• Android
• 透過⼯工具如apktool是拿來來把 apk 拆開,反編譯
apk 之後,看到smali檔案跟resource
• dex2jar 可以把 apk 轉成 jar再⽤用jd-gui檢視 java
code
• 可進⾏行行竄改程式並且重新產⽣生apk檔
M9逆向⼯工程(M9 - Reverse Engineering)
• 可使⽤用obfuscate進⾏行行程式碼混淆
• Android 本⾝身內建基本proguard⼯工具
• iOS 可⽤用open source https://github.com/
obfuscator-llvm/obfuscator/wiki
• 可⽤用 obfuscate進階⼯工具,如DexGuard. Arxan.
AppGuard等⼯工具除了了混淆之外也有些是加殼或是
靜態、動態防護
M10多餘的功能(M10 - Extraneous Functionality)
• 額外功能,如開發時常常會使⽤用後⾨門或是在側
是環境為了了⽅方便便直接輸入密碼等功能容易易造成
不⼩小⼼心上線到正式環境的風險
M10多餘的功能(M10 - Extraneous Functionality)
• 在程式開發階段,應進⾏行行⼈人⼯工code review避免此狀狀況發⽣生,可配
合如pull request機制來來進⾏行行merge前的關卡
• 檢查Log資訊是否不包含機敏資訊
• 使⽤用proxy⼯工具如charles. MITM proxy來來檢查app連線
• iOS
• 可以使⽤用不同target或debug flag來來分開環境
• Android
• ⽤用debug flag分開環境
其他常⾒見見問題
• ⾏行行動應⽤用App使⽤用第三⽅方函式庫前,需先確認其是來來⾃自
可靠來來源、有持續更更新並經測試沒有漏 洞洞、後端⽊木⾺馬及
不明傳送⽬目的地。
• 對使⽤用者輸入驗證,避免SQL injection等問題
• iOS 使⽤用 ARC開發
• iOS使⽤用ATS(HTTPS)設定
• JB. Root已弊⼤大於利利
安全軟體開發
• 設計階段:清楚定義資訊安全政策
• 開發階段:針對原始碼進⾏行行安全漏洞洞掃描,並且針
對漏洞洞等級分類追蹤與修復,及早發現問題並調整
• 測試階段:模擬駭客進⾏行行滲透測試(Penetration
Test)
• 上線階段:監控並追蹤攻擊,避免造成風險
⿊黑⽩白箱測試
• iOS
• Santoku. Snoop-it. MobSF
• Android
• Santoku. MobSF
Zero Day 平台
• ZeroDay
• 烏雲
Q&A

More Related Content

What's hot

What's hot (20)

Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
 
QSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and JitQSpiders - Jdk Jvm Jre and Jit
QSpiders - Jdk Jvm Jre and Jit
 
Android Security & Penetration Testing
Android Security & Penetration TestingAndroid Security & Penetration Testing
Android Security & Penetration Testing
 
Building Cloud-Native Applications with Helidon
Building Cloud-Native Applications with HelidonBuilding Cloud-Native Applications with Helidon
Building Cloud-Native Applications with Helidon
 
Intro to Java
Intro to JavaIntro to Java
Intro to Java
 
Java 17
Java 17Java 17
Java 17
 
Burp plugin development for java n00bs (44 con)
Burp plugin development for java n00bs (44 con)Burp plugin development for java n00bs (44 con)
Burp plugin development for java n00bs (44 con)
 
Android Secure Coding
Android Secure CodingAndroid Secure Coding
Android Secure Coding
 
Pentesting Android Apps
Pentesting Android AppsPentesting Android Apps
Pentesting Android Apps
 
Introduction to Java Programming, Basic Structure, variables Data type, input...
Introduction to Java Programming, Basic Structure, variables Data type, input...Introduction to Java Programming, Basic Structure, variables Data type, input...
Introduction to Java Programming, Basic Structure, variables Data type, input...
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
 
Timings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerTimings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical Hacker
 
DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11
 
History Of JAVA
History Of JAVAHistory Of JAVA
History Of JAVA
 
Go, meet Lua
Go, meet LuaGo, meet Lua
Go, meet Lua
 
RxJava - introduction & design
RxJava - introduction & designRxJava - introduction & design
RxJava - introduction & design
 
Java Secure Coding Practices
Java Secure Coding PracticesJava Secure Coding Practices
Java Secure Coding Practices
 
Deep dive into Java security architecture
Deep dive into Java security architectureDeep dive into Java security architecture
Deep dive into Java security architecture
 
JVM
JVMJVM
JVM
 

Similar to Mobile 開發常見資安議題

20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全
Net Tuesday Taiwan
 
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
Hong-Ting Zhou
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取
OFMKT
 
安博士Asec 2010年9月安全报告
安博士Asec 2010年9月安全报告安博士Asec 2010年9月安全报告
安博士Asec 2010年9月安全报告
ahnlabchina
 
99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet
Shi-Hwao Wang
 
安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告
ahnlabchina
 
安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告
ahnlabchina
 
Session1(更新20230205).pdf
Session1(更新20230205).pdfSession1(更新20230205).pdf
Session1(更新20230205).pdf
ssuser9026c8
 
安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告
ahnlabchina
 

Similar to Mobile 開發常見資安議題 (20)

20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全
 
【HITCON FreeTalk】Supply Chain Attack
【HITCON FreeTalk】Supply Chain Attack【HITCON FreeTalk】Supply Chain Attack
【HITCON FreeTalk】Supply Chain Attack
 
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
手機可以埋藏秘密,但是 App 不行 - 淺談 App 安全檢測與實作
 
Twitter Wanghongyang Backup Security 20090402 0713
Twitter Wanghongyang Backup Security 20090402 0713Twitter Wanghongyang Backup Security 20090402 0713
Twitter Wanghongyang Backup Security 20090402 0713
 
雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取
 
HITCON GIRLS: Android 滲透測試介紹 (Elven Liu)
HITCON GIRLS: Android 滲透測試介紹 (Elven Liu)HITCON GIRLS: Android 滲透測試介紹 (Elven Liu)
HITCON GIRLS: Android 滲透測試介紹 (Elven Liu)
 
08
0808
08
 
安博士Asec 2010年9月安全报告
安博士Asec 2010年9月安全报告安博士Asec 2010年9月安全报告
安博士Asec 2010年9月安全报告
 
99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet
 
黑站騎士
黑站騎士黑站騎士
黑站騎士
 
安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告
 
安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告安博士Asec 2010年1月安全报告
安博士Asec 2010年1月安全报告
 
SYMANTEC CODE SIGNING 為您的軟體增加至關重要的安全功能
SYMANTEC CODE SIGNING 為您的軟體增加至關重要的安全功能SYMANTEC CODE SIGNING 為您的軟體增加至關重要的安全功能
SYMANTEC CODE SIGNING 為您的軟體增加至關重要的安全功能
 
雲端生活面面觀
雲端生活面面觀雲端生活面面觀
雲端生活面面觀
 
Security threatsandtrends michaelsentonas
Security threatsandtrends michaelsentonasSecurity threatsandtrends michaelsentonas
Security threatsandtrends michaelsentonas
 
Session1(更新20230205).pdf
Session1(更新20230205).pdfSession1(更新20230205).pdf
Session1(更新20230205).pdf
 
Chinese Uses of Big Data Cloud Security 漫步在雲端資安新戰場
Chinese Uses of Big Data Cloud Security 漫步在雲端資安新戰場 Chinese Uses of Big Data Cloud Security 漫步在雲端資安新戰場
Chinese Uses of Big Data Cloud Security 漫步在雲端資安新戰場
 
安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告
 

Mobile 開發常見資安議題