[HACKING] Mobile Application Vulnerability Research Guide(OWASP Mobile Security Project)
오늘은 간만에 모바일 보안, 즉 스마트폰에 대한 이야기를 하려합니다. (요즘 바빠서 글 쓸 시간이 없네요.. )
올해 OWASP는 Mobile Security Project로 Mobile Application Security Guide, 즉 취약점 점검, 모의해킹, 보안을 위한 체크리스트를 공개했습니다.
내용을 보시면 아시곘지만.. 악성코드 분석 이런 내용보다는 앱을 공격하고 취약점을 진단하는 내용에 포커싱이 맞춰져 있습니다. 총 91개의 항목으로 구성되어 있고 모바일 취약점 진단하시는 분이라면 조금 도움될 수 있는 문서인 것 같네요.
https://www.owasp.org/index.php/OWASP_Mobile_Security_Project > file
Intro
사실 취약점 분석이나 해킹의 과정이 절차가 있진 않습니다. 물론 개인적인 생각이지만.. Recon / Scanning 등 순서에 따라 하기보단 그냥 막 찔러보는게 제 스타일인 것 같네요. [ 정보는 테스트하면서 수집하는거죠 :) ]
다만 취약점 분석 중 확실히 도움되는 부분 중 하나는 잘 정리된 체크리스트입니다. 어떤 어플리케이션 / 시스템의 취약성을 제거하는데는, 놓치는 것이 없도록 확인할 수 있는 체크리스트가 좋은 역할을 하죠. 그럼 한번 보도록 하겠습니다.
Mobile Security Check List
크게 Client 쪽 체크리스트, Server 단 체크리스트로 나뉘어져 있고 약간 “최소 꼭 확인해야할 것” 정도의 느낌으로 해석하시면 될 것 같습니다.
No | Vulnerability | Platform | Classification | SIDE |
---|---|---|---|---|
1 | Application is Vulnerable to Reverse Engineering Attack/Lack of Code | All | Static Ckecks | Client-Side |
2 | Account Lockout not Implemented | All | Dynamic Ckecks | Client-Side |
3 | Application is Vulnerable to XSS | All | Static + Dynamic Ckecks | Client-Side |
4 | Authentication bypassed | All | Dynamic Ckecks | Client-Side |
5 | Hard coded sensitive information in Application Code (including Crypt | All | Static Ckecks | Client-Side |
6 | Malicious File Upload | All | Dynamic Ckecks | Client-Side |
7 | Session Fixation | All | Dynamic Ckecks | Client-Side |
8 | Application does not Verify MSISDN | WAP | Unknown | Client-Side |
9 | Privilege Escalation | All | Dynamic Ckecks | Client-Side |
10 | SQL Injection | All | Static + Dynamic Check | Client-Side |
11 | Attacker can bypass Second Level Authentication | All | Dynamic Ckecks | Client-Side |
12 | Application is vulnerable to LDAP Injection | All | Dynamic Ckecks | Client-Side |
13 | Application is vulnerable to OS Command Injection | All | Dynamic Ckecks | Client-Side |
14 | iOS snapshot/backgrounding Vulnerability | iOS | Dynamic Ckecks | Client-Side |
15 | Debug is set to TRUE | Android | Static Ckecks | Client-Side |
16 | Application makes use of Weak Cryptography | All | Static Ckecks | Client-Side |
17 | Cleartext information under SSL Tunnel | All | Dynamic Ckecks | Client-Side |
18 | Client Side Validation can be bypassed | All | Dynamic Ckecks | Client-Side |
19 | Invalid SSL Certificate | All | Static Ckecks | Client-Side |
20 | Sensitive Information is sent as Clear Text over network/Lack of Data | All | Dynamic Ckecks | Client-Side |
21 | CAPTCHA is not implemented on Public Pages/Login Pages | All | Dynamic Ckecks | Client-Side |
22 | Improper or NO implementation of Change Password Page | All | Dynamic Ckecks | Client-Side |
23 | Application does not have Logout Functionality | All | Dynamic Ckecks | Client-Side |
24 | Sensitive information in Application Log Files | All | Dynamic Ckecks | Client-Side |
25 | Sensitive information sent as a querystring parameter | All | Dynamic Ckecks | Client-Side |
26 | URL Modification | All | Dynamic Ckecks | Client-Side |
27 | Sensitive information in Memory Dump | All | Dynamic Ckecks | Client-Side |
28 | Weak Password Policy | All | Dynamic Ckecks | Client-Side |
29 | Autocomplete is not set to OFF | All | Static Ckecks | Client-Side |
30 | Application is accessible on Rooted or Jail Broken Device | All | Dynamic Ckecks | Client-Side |
31 | Back-and-Refresh attack | All | Dynamic Ckecks | Client-Side |
32 | Directory Browsing | All | Static + Dynamic Chec | Client-Side |
33 | Usage of Persistent Cookies | All | Dynamic Ckecks | Client-Side |
34 | Open URL Redirects are possible | All | Dynamic Ckecks | Client-Side |
35 | Improper exception Handling: In code | All | Static Ckecks | Client-Side |
36 | Insecure Application Permissions | All | Static Ckecks | Client-Side |
37 | Application build contains Obsolete Files | All | Static Ckecks | Client-Side |
38 | Certificate Chain is not Validated | All | Static + Dynamic Chec | Client-Side |
39 | Last Login information is not displayed | All | Dynamic Ckecks | Client-Side |
40 | Private IP Disclosure | All | Static Ckecks | Client-Side |
41 | UI Impersonation through RMS file modification | JAVA | Dynamic Ckecks | Client-Side |
42 | UI Impersonation through JAR file modification | Android | Dynamic Ckecks | Client-Side |
43 | Operation on a resource after expiration or release | All | Dynamic Ckecks | Client-Side |
44 | No Certificate Pinning | All | Dynamic Ckecks | Client-Side |
45 | Cached Cookies or information not cleaned after application removal/ | All | Dynamic Ckecks | Client-Side |
46 | ASLR Not Used | iOS | Static Ckecks | Client-Side |
47 | Clipboard is not disabled | All | Dynamic Ckecks | Client-Side |
48 | Cache smashing protection is not enabled | iOS | Static Ckecks | Client-Side |
49 | Android Backup Vulnerability | Android | Static Ckecks | Client-Side |
50 | Unencrypted Credentials in Databases (sqlite db) | All | Dynamic Ckecks | Client-Side |
51 | Store sensitive information outside App Sandbox (on SDCard) | All | Dynamic Ckecks | Client-Side |
52 | Allow Global File Permission on App Data | Android | Dynamic Ckecks | Client-Side |
53 | Store Encryption Key LocAlly/Store Sensitive Data in ClearText | All | Dynamic Ckecks | Client-Side |
54 | Bypass Certificate Pinning | All | Dynamic Ckecks | Client-Side |
55 | Third-party Data Transit on Unencrypted Channel | All | Dynamic Ckecks | Client-Side |
56 | Failure to Implement Trusted Issuers | Android | Static Ckecks | Client-Side |
57 | Allow All Hostname Verifier | Android | Static Ckecks | Client-Side |
58 | Ignore SSL Certificate Error | All | Static Ckecks | Client-Side |
59 | Weak Custom Hostname Verifier | Android | Static Ckecks | Client-Side |
60 | App/Web Caches Sensitive Data Leak | All | Dynamic Ckecks | Client-Side |
61 | Leaking Content Provider | Android | Dynamic Ckecks | Client-Side |
62 | Redundancy Permission Granted | Android | Static Ckecks | Client-Side |
63 | Use Spoof-able Values for Authenticating User (IMEI, UDID) | All | Dynamic Ckecks | Client-Side |
64 | Use of Insecure and/or Deprecated Algorithms | All | Static Ckecks | Client-Side |
65 | Local File Inclusion (might be through XSS Vulnerability) | All | Static + Dynamic Chec | Client-Side |
66 | Activity Hijacking | Android | Static Ckecks | Client-Side |
67 | Service Hijacking | Android | Static Ckecks | Client-Side |
68 | Broadcast Thief | Android | Static Ckecks | Client-Side |
69 | Malicious Broadcast Injection | Android | Static Ckecks | Client-Side |
70 | Malicious Activity/Service Launch | Android | Static Ckecks | Client-Side |
71 | Using Device Identifier as Session | All | Dynamic Ckecks | Client-Side |
72 | Symbols Remnant | iOS | Static Ckecks | Client-Side |
73 | Lack of Check-sum Controls/Altered Detection | Android | Dynamic Ckecks | Client-Side |
74 | Insecure permissions on Unix domain sockets | Android | Static Ckecks | Client-Side |
75 | Insecure use of network sockets | Android | Static Ckecks | Client-Side |
76 | Cleartext password in Response | All | Dynamic Ckecks | Server-Side |
77 | Direct Reference to internal resource without authentication | All | Dynamic Ckecks | Server-Side |
78 | Application has NO or improper Session Management/Failure to Invali | All | Dynamic Ckecks | Server-Side |
79 | Cross Domain Scripting Vulnerability | All | Dynamic Ckecks | Server-Side |
80 | Cross Origin Resource Sharing | All | Dynamic Ckecks | Server-Side |
81 | Improper Input Validation - Server Side | All | Dynamic Ckecks | Server-Side |
82 | Detailed Error page shows internal sensitive information | All | Dynamic Ckecks | Server-Side |
83 | Application Allows HTTP Methods besides GET and POST | All | Dynamic Ckecks | Server-Side |
84 | Cross Site Request Forgery (CSRF)/SSRF | All | Dynamic Ckecks | Server-Side |
85 | Cacheable HTTPS Responses | All | Dynamic Ckecks | Server-Side |
86 | Path Attribute not set on a Cookie | All | Dynamic Ckecks | Server-Side |
87 | HttpOnly Attribute not set for a cookie | All | Dynamic Ckecks | Server-Side |
88 | Secure Attribute not set for a cookie | All | Dynamic Ckecks | Server-Side |
89 | Application is Vulnerable to Clickjacking/Tapjacking attack | All | Dynamic Ckecks | Server-Side |
90 | Server/OS fingerprinting is possible | All | Dynamic Ckecks | Server-Side |
91 | Lack of Adequate Timeout Protection | All | Dynamic Ckecks | Server-Side |
Reference
https://www.owasp.org/index.php/OWASP_Mobile_Security_Project