EN

[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 단 체크리스트로 나뉘어져 있고 약간 "최소 꼭 확인해야할 것" 정도의 느낌으로 해석하시면 될 것 같습니다.

NoVulnerabilityPlatformClassificationSIDE
1Application is Vulnerable to Reverse Engineering Attack/Lack of CodeAllStatic CkecksClient-Side
2Account Lockout not ImplementedAllDynamic CkecksClient-Side
3Application is Vulnerable to XSSAllStatic + Dynamic CkecksClient-Side
4Authentication bypassedAllDynamic CkecksClient-Side
5Hard coded sensitive information in Application Code (including CryptAllStatic CkecksClient-Side
6Malicious File UploadAllDynamic CkecksClient-Side
7Session FixationAllDynamic CkecksClient-Side
8Application does not Verify MSISDNWAPUnknownClient-Side
9Privilege EscalationAllDynamic CkecksClient-Side
10SQL InjectionAllStatic + Dynamic CheckClient-Side
11Attacker can bypass Second Level AuthenticationAllDynamic CkecksClient-Side
12Application is vulnerable to LDAP InjectionAllDynamic CkecksClient-Side
13Application is vulnerable to OS Command InjectionAllDynamic CkecksClient-Side
14iOS snapshot/backgrounding VulnerabilityiOSDynamic CkecksClient-Side
15Debug is set to TRUEAndroidStatic CkecksClient-Side
16Application makes use of Weak CryptographyAllStatic CkecksClient-Side
17Cleartext information under SSL TunnelAllDynamic CkecksClient-Side
18Client Side Validation can be bypassedAllDynamic CkecksClient-Side
19Invalid SSL CertificateAllStatic CkecksClient-Side
20Sensitive Information is sent as Clear Text over network/Lack of DataAllDynamic CkecksClient-Side
21CAPTCHA is not implemented on Public Pages/Login PagesAllDynamic CkecksClient-Side
22Improper or NO implementation of Change Password PageAllDynamic CkecksClient-Side
23Application does not have Logout FunctionalityAllDynamic CkecksClient-Side
24Sensitive information in Application Log FilesAllDynamic CkecksClient-Side
25Sensitive information sent as a querystring parameterAllDynamic CkecksClient-Side
26URL ModificationAllDynamic CkecksClient-Side
27Sensitive information in Memory DumpAllDynamic CkecksClient-Side
28Weak Password PolicyAllDynamic CkecksClient-Side
29Autocomplete is not set to OFFAllStatic CkecksClient-Side
30Application is accessible on Rooted or Jail Broken DeviceAllDynamic CkecksClient-Side
31Back-and-Refresh attackAllDynamic CkecksClient-Side
32Directory BrowsingAllStatic + Dynamic ChecClient-Side
33Usage of Persistent CookiesAllDynamic CkecksClient-Side
34Open URL Redirects are possibleAllDynamic CkecksClient-Side
35Improper exception Handling: In codeAllStatic CkecksClient-Side
36Insecure Application PermissionsAllStatic CkecksClient-Side
37Application build contains Obsolete FilesAllStatic CkecksClient-Side
38Certificate Chain is not ValidatedAllStatic + Dynamic ChecClient-Side
39Last Login information is not displayedAllDynamic CkecksClient-Side
40Private IP DisclosureAllStatic CkecksClient-Side
41UI Impersonation through RMS file modificationJAVADynamic CkecksClient-Side
42UI Impersonation through JAR file modificationAndroidDynamic CkecksClient-Side
43Operation on a resource after expiration or releaseAllDynamic CkecksClient-Side
44No Certificate PinningAllDynamic CkecksClient-Side
45Cached Cookies or information not cleaned after application removal/AllDynamic CkecksClient-Side
46ASLR Not UsediOSStatic CkecksClient-Side
47Clipboard is not disabledAllDynamic CkecksClient-Side
48Cache smashing protection is not enablediOSStatic CkecksClient-Side
49Android Backup VulnerabilityAndroidStatic CkecksClient-Side
50Unencrypted Credentials in Databases (sqlite db)AllDynamic CkecksClient-Side
51Store sensitive information outside App Sandbox (on SDCard)AllDynamic CkecksClient-Side
52Allow Global File Permission on App DataAndroidDynamic CkecksClient-Side
53Store Encryption Key LocAlly/Store Sensitive Data in ClearTextAllDynamic CkecksClient-Side
54Bypass Certificate PinningAllDynamic CkecksClient-Side
55Third-party Data Transit on Unencrypted ChannelAllDynamic CkecksClient-Side
56Failure to Implement Trusted IssuersAndroidStatic CkecksClient-Side
57Allow All Hostname VerifierAndroidStatic CkecksClient-Side
58Ignore SSL Certificate ErrorAllStatic CkecksClient-Side
59Weak Custom Hostname VerifierAndroidStatic CkecksClient-Side
60App/Web Caches Sensitive Data LeakAllDynamic CkecksClient-Side
61Leaking Content ProviderAndroidDynamic CkecksClient-Side
62Redundancy Permission GrantedAndroidStatic CkecksClient-Side
63Use Spoof-able Values for Authenticating User (IMEI, UDID)AllDynamic CkecksClient-Side
64Use of Insecure and/or Deprecated AlgorithmsAllStatic CkecksClient-Side
65Local File Inclusion (might be through XSS Vulnerability)AllStatic + Dynamic ChecClient-Side
66Activity HijackingAndroidStatic CkecksClient-Side
67Service HijackingAndroidStatic CkecksClient-Side
68Broadcast ThiefAndroidStatic CkecksClient-Side
69Malicious Broadcast InjectionAndroidStatic CkecksClient-Side
70Malicious Activity/Service LaunchAndroidStatic CkecksClient-Side
71Using Device Identifier as SessionAllDynamic CkecksClient-Side
72Symbols RemnantiOSStatic CkecksClient-Side
73Lack of Check-sum Controls/Altered DetectionAndroidDynamic CkecksClient-Side
74Insecure permissions on Unix domain socketsAndroidStatic CkecksClient-Side
75Insecure use of network socketsAndroidStatic CkecksClient-Side
76Cleartext password in ResponseAllDynamic CkecksServer-Side
77Direct Reference to internal resource without authenticationAllDynamic CkecksServer-Side
78Application has NO or improper Session Management/Failure to InvaliAllDynamic CkecksServer-Side
79Cross Domain Scripting VulnerabilityAllDynamic CkecksServer-Side
80Cross Origin Resource SharingAllDynamic CkecksServer-Side
81Improper Input Validation - Server SideAllDynamic CkecksServer-Side
82Detailed Error page shows internal sensitive informationAllDynamic CkecksServer-Side
83Application Allows HTTP Methods besides GET and POSTAllDynamic CkecksServer-Side
84Cross Site Request Forgery (CSRF)/SSRFAllDynamic CkecksServer-Side
85Cacheable HTTPS ResponsesAllDynamic CkecksServer-Side
86Path Attribute not set on a CookieAllDynamic CkecksServer-Side
87HttpOnly Attribute not set for a cookieAllDynamic CkecksServer-Side
88Secure Attribute not set for a cookieAllDynamic CkecksServer-Side
89Application is Vulnerable to Clickjacking/Tapjacking attackAllDynamic CkecksServer-Side
90Server/OS fingerprinting is possibleAllDynamic CkecksServer-Side
91Lack of Adequate Timeout ProtectionAllDynamic CkecksServer-Side

Reference

https://www.owasp.org/index.php/OWASP_Mobile_Security_Project