'Secure Story/iOS'에 해당되는 글 1건

  1. [번역] IOS Application Security Testing Cheat Sheet (1)

IOS Application Security Testing Cheat Sheet

원문 보기

목차

  1. Cheat Sheet 초안 (진행중)
  2. 소개
  3. 정보 수집
  4. 어플리케이션 트래픽 분석
  5. 실시간 분석
  6. 안전하지 않은 데이터 저장
  7. 도구
  8. 관련 기사
  9. 저자 및 주 편집자
  10. 다른 Cheat Sheet


Cheat Sheet 초안 (진행중)

소개


이 Cheat sheet는 iOS 어플리케이션 테스트 시 수행되는 항목의 체크리스트를 제공한다. 모바일 어플리케이션을 평가할 때 일부 영역은 고려되어야한다. : (클라이언트 소프트웨어, 통신채널과 서버측 인프라).
iOS 어플리케이션 테스트는 JaileBreak가 적용된 디바이스가 필요하다. (설치되는 소프트웨어에 아무런 제한을 두지 않는 디바이스)

 

정보 수집


  • 어플리케이션 동작 관찰
  • 어플리케이션의 데이터 상태(안정시, 이동 중 또는 표시)와 민감도를 파악
  • 접근 방법 식별
  • 사용중인 서버 측 API 식별
  • 사용중인 프로토콜 식별
  • 다른 어플리케이션 또는 서비스와 어플리케이션 간의 상호 작용 식별
  • 앱 스토어 바이너리 해독 : .ipa 실행 시 커널의 mach 로더에 의해 복호된다. Cydia는 사용가능한 일부 어플리케이션이 있다.(Crackulous, AppCrack and Clutch) 또한, GDB를 사용할 수 있다. 어플리케이션의 암호화 여부는 LC_ENCRYPTION_INFO의 "cryptid" 필드로 식별된다. "otool –l | grep –A 4 LC_ENCRYPTION_INFO" 명령어를 사용한다.
  • 컴파일된 어플리케이 구조 파악 : otool –f or lipo -info .
  • 함수, 클래스 및 메서드는 어플리케이션과 동적으로 로드된 라이브러리에 참조되어 있는지에 대한 정보 획득 : "nm " 사용
  • 동적 종속성 목록화 : "otool –L " 사용
  • 어플리케이션에 대한 로드 명령을 추출
  • 컴파일된 어플리케이션으로부터 실시간 정보를 추출. 각프로그램에 컴파일된 클래스 및 메서드 인스턴스 변수와 속성을 식별.
  • class-dump-z 사용.
  • 나중에 Method Swizzling을 위한 hook를 만들거나 앱의 Method를 읽기 쉽게 하기 위해 사용되는 .h 파일에 넣을 수 있다.
  • Keychain에 저장된 어플리케이션 관련 인증 정보와 암호를 나타내기 위해 dump_keychain을 사용하여 Keychain을 추출
  • 소정의 보안 특징을 파악 :
  • PIE (Position Independent Executable) 검출 - PIE 없이 컴파일된 APP(“–fPIE –pie” flag 사용)은 고정된 주소에서 실행파일을 로드한다. 이는 명령을 통해 확인한다. : otool –hv
  • Stack smashing 보호 - fstack-protector-all 컴파일러 flag(컴파일러 옵션) 명시 - "canary"는 저장된 Base Pointer, instruction pointer 및 function arguments를 보호하기 위해 stack에 위치한다.
  • 그것들이 덮어 쓰여졌는지 여부를 확인하기 위해 함수의 리턴 시 검증된다. 이를 확인하기 위해 사용되는 방법 : "Check this using: otool –I –v | grep stack"
  • 어플리케이션이 Stack Smashing 보호하여 컴파일 된 경우 2개의 정의되지 않은 Symbol이 나타난다 : “___stack_chk_fail” and “___stack_chk_guard”.


어플리케이션 트래픽 분석


  • 에러 메세지 분석
  • Cache 정보 분석
  • Transport 계층 보안 (TLS 버전; NSURKRequest object)
  • XML 프로세서 공격
  • SQL Injection
  • 개인정보 이슈 (민감한 정보 공개)
  • 부적절한 Session handling
  • 신뢰되지 않은 입력을 통한 판단
  • 깨진 암호화
  • 관리되지 않은 코드
  • URL 스키마
  • 푸쉬 알림
  • 인증 (Authentication)
  • 권한 (Authorization)
  • Session 관리
  • 데이터 스토리지
  • 데이터 유효성 검증(input, output)
  • Transport 계층 보호 - 인증서가 확인된 어플리케션은 Certificate Pinning을 구현
  • Denial of service (DoS) - 서비스 거부 공격
  • 비즈니스 로직
  • UDID 또는 MAC ID 사용 (개인 정보 보호 문제)


실시간 분석


  • 어플리케이션 디스어셈블 (gdb)
  • 파일 시스템 상호 작용 분석
  • 데이터의 흐름을 알아내거나 "stealer" 앱을 만들기 위해 어느 몇가지 흥미로운 method의 method swizzling hook를 생성하기 위해 class-dump-z로 .h 파일이 만든 것을 사용.
  • 디버거로 어플리케이션 분석 : 메모리의 objects, 호출 함수 및 method를 점검; 실시간 변수와 method를 대체.
  • CFStream and NSStream 조사
  • 프로토콜 핸들러 조사 (어플리케이션 : openURL - URL 요청을 인스턴스화된 소스 어플리케이션을 검증) 예 : 악성 IFrame을 사용하여 어플리케이션의 기본 랜딩 페이지를 재구성해 본다.
  • 버퍼 오버플로우와 메모리 커럽션(메모리 변형)
  • 클라이언트 측 injection
  • 실시간 injection
  • 소스에 대한 접근을 갖는 것은 Xcode의 체계를 사용하여 메모리를 테스트


안전하지 않은 데이터 저장


  • 로그 파일 조사 ( 장치 연결과 분리시 Xcode Organizer의 로그)
  • 어플리케이션 폴더 (var/mobile/Applications), 캐쉬, 백업(iTunes)에서 안전하지 않은 데이터 저장
  • 사용자 정의로 만든 파일 조사
  • SQLite Database 분석
  • 속성 리스트 파일 조사
  • 파일 캐싱 조사
  • 키보드 캐쉬의 안전하지 않은 데이터 저장
  • Cookie 조사 (binarycookies)
  • iOS keycahin 분석 (/private/var/Keychains/keychain-2.db) - keychain이 포함된 어떤 정보에 접근할 때; 공격자가 장치에 물리적으로 접근할 수 있는 경우 Keychain에 저장된 데이터만 접근할 수 있다.
  • Snapshot에서 민감한 정보를 확인
  • 파일과 Keycahin 엔트리의 데이터 보호 검사 (Keychain 항목은 데이터 보호의 접근성 상수를 확인하는 어플리케이션에서 읽을 수 있는 시기를 파악하기 위해)


도구
 

Tool Link Description
Mallory proxy http://intrepidusgroup.com/insight/mallory/ Proxy for Binary protocols
Charles/Burp proxy http://www.charlesproxy.com/  ;

http://www.portswigger.net/burp/

Proxy for HTTP and HTTPS
OpenSSH http://www.openssh.com/ Connect to the iPhone remotely over SSH
Sqlite3 http://www.sqlite.org/ Sqlite database client
GNU Debugger http://www.gnu.org/software/gdb/ For run time analysis & reverse engineering
Syslogd https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man8/syslogd.8.html View iPhone logs
Tcpdump http://www.tcpdump.org/ Capture network traffic on phone
Otool http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/otool.1.html Odcctools: otool – object file displaying tool
Cycript http://www.cycript.org/ A language designed to interact with Objective-C classes
SSL Kill switch https://github.com/iSECPartners/ios-ssl-kill-switch Blackbox tool to disable SSL certificate validation - including certificate pinning in NSURL
Plutil http://scw.us/iPhone/plutil/ To view Plist files
nm Analysis tool to display the symbol table, which includes names of functions and methods, as well as their load addresses.
sysctl https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man8/sysctl.8.html A utility to read and change kernel state variables
dump_keychain https://github.com/emonti/iOS_app_re_tools A utility to dump the keychain
Filemon http://www.newosxbook.com/files/filemon.iOS Monitor realtime iOS file system
FileDP http://www.securitylearn.net/2012/10/18/extracting-data-protection-class-from-files-on-ios/ Audits data protection of files
BinaryCookieReader http://securitylearn.net/wp-content/uploads/tools/iOS/BinaryCookieReader.py Read cookies.binarycookies files
lsof ARM Binary https://github.com/u35tpus/iosrep/tree/master/lsof list of all open files and the processes that opened them
lsock ARM Binary http://www.newosxbook.com/index.php?page=downloads monitor socket connections
PonyDebugger Injected https://github.com/dtrukr/PonyDebuggerInjected Injected via Cycript to enable remote debugging
Weak Class Dump https://raw.github.com/limneos/weak_classdump/master/weak_classdump.cy Injected via Cycript to do class-dump (for when you cant un-encrypt the binary)
TrustME https://github.com/intrepidusgroup/trustme Lower level tool to disable SSL certificate validation - including certificate pinning (for everything else but NSURL)
Mac Robber http://www.sleuthkit.org/mac-robber/download.php C code, forensic tool for imaging filesystems and producing a timeline
USBMux Proxy https://github.com/st3fan/usbmux-proxy command line tool to connect local TCP port sto ports on an iPhone or iPod Touch device over USB.
iFunBox http://www.i-funbox.com/ Filesystem access (no jailbreak needed), USBMux Tunneler, .ipa installer
iNalyzer https://appsec-labs.com/iNalyzer/ iOS Penetration testing framework
removePIE https://github.com/peterfillmore/removePIE Disables ASLR of an application
snoop-it https://code.google.com/p/snoop-it/ A tool to assist security assessments and dynamic analysis of iOS Apps

 


관련 기사



저자 및 주 편집자


Oana Cornea - oanacornea123[at]gmail.com
Jason Haddix - jason.haddix[at]hp.com


다른 Cheat Sheet


OWASP Cheat Sheets Project Homepage

Developer Cheat Sheets (Builder)

Assessment Cheat Sheets (Breaker)

Mobile Cheat Sheets

OpSec Cheat Sheets (Defender)

Draft Cheat Sheets

신고

'Secure Story > iOS' 카테고리의 다른 글

[번역] IOS Application Security Testing Cheat Sheet  (1) 2013.11.27