나만 모르는 어플리케이션 데이터 크롤링 비법 (리버스엔지니어링, OCR, 패킷스니핑)

실무에서 활용되는 어플리케이션 데이터 크롤링을 위한 리버스 엔지니어링, OCR, 패킷 스니핑의 기초부터 활용 방법까지 알아보세요.

1. 리버스 엔지니어링 (Reverse Engineering)

리버스 엔지니어링은 앱의 바이너리 코드(Binary Code)를 디컴파일(Decompile)하여 원래의 소스 코드나 그에 가까운 형태를 복원하는 과정입니다. Android의 APK 파일이나 iOS의 IPA 파일은 각각 디컴파일을 통해 분석할 수 있습니다.
이 방법은 주로 앱의 내부 로직을 이해하거나 데이터 통신 방법을 파악하기 위해 사용됩니다. 리버스 엔지니어링을 회피하기 위한 특별한 처리를 한 앱에 대해서는 분석이 안될수도 있습니다. 아래는 Android APK 리버스 엔지니어링과 iOS IPA 리버스 엔지니어링을 각각 나누어 정리해보았습니다.

1.1. Android APK 리버스 엔지니어링

도구: jadx, APKTool, Dex2jar 등

1.1.1. Android APK 리버스 엔지니어링을 통한 진행 절차

  1. Google Play Store에서 APK 파일을 다운로드합니다.
  1. APKTool 같은 도구를 사용하여 APK 파일을 디컴파일합니다.
  1. 디컴파일된 소스 코드를 분석하여 앱의 로직, API 엔드포인트, 데이터 구조 등을 파악합니다.
  1. 네트워크 패킷을 분석하거나 로그를 확인하여 데이터 통신 방법을 파악합니다.

1.2. iOS IPA 리버스 엔지니어링

도구: Hopper, IDA Pro, Ghidra 등

1.2.1. iOS IPA 리버스 엔지니어링을 통한 진행 절차

  1. App Store에서 IPA 파일을 다운로드합니다.
  1. 선택한 도구를 사용하여 IPA 파일을 디컴파일합니다.
  1. 디컴파일된 소스를 분석하여 앱의 내부 로직, 데이터 통신 방법 등을 이해합니다.
 
 

2.OCR

OCR (Optical Character Recognition)은 앱 화면을 캡처하여 그 이미지에서 텍스트를 추출하는 방법입니다. OCR의 정확도는 다양한 요소에 의해 영향을 받습니다. 텍스트의 크기, 폰트, 배경색 등이 정확도에 영향을 줄 수 있습니다. 이는 높은 정확도를 기대하기 어려운 경우가 있어 추천하는 방법이 아닙니다. 그러나 API나 소스코드에 접근이 불가능하거나, 다른 방법으로 데이터를 얻기 어려운 상황에서는 유용한 방법일 수 있습니다.

2.1. OCR 도구

  • Tesseract: 가장 널리 알려진 오픈 소스 OCR 엔진입니다.
  • Google Cloud Vision API: Google이 제공하는 OCR 서비스로, 높은 정확도와 다양한 언어 지원이 가능합니다.
  • ABBYY FineReader: 상용 OCR 소프트웨어로 높은 정확도를 제공합니다.

2.2. OCR 도구를 통한 진행 절차

  1. 대상 앱에서 필요한 정보가 표시되는 화면을 캡처합니다.
  1. OCR의 정확도를 높이기 위해 이미지의 전처리가 필요할 수 있습니다. 이를 위해 이미지에서 노이즈를 제거하거나, 명도와 대비를 조절하는 작업을 진행합니다.
  1. 전처리된 이미지를 OCR 도구를 통해 텍스트로 변환합니다.
  1. OCR을 통해 얻은 텍스트는 정제되지 않았거나 오류가 있을 가능성이 있으므로, 이를 정제하는 작업이 필요합니다.
  1. 정제된 텍스트를 분석하고 필요한 데이터를 저장합니다.
 
 

3. 패킷 스니핑(Packet Sniffing)

패킷 스니핑은 네트워크에서 데이터 패킷을 캡처하고 분석하는 과정입니다. 이 방법은 앱 크롤링에서 해당 앱이 서버와 어떻게 데이터를 주고받는지를 이해하려고 할 때 유용합니다. 패킷 스니핑을 통해 앱의 내부 로직, 사용되는 API 엔드포인트, 인증 메커니즘 등을 분석할 수 있습니다.

3.1. 패킷 스니핑 도구

  • Wireshark: 가장 널리 사용되는 패킷 스니핑 도구입니다.
  • Charles Proxy: 주로 웹 개발과 모바일 앱 분석에 사용됩니다. SSL 프록싱 기능을 제공해 HTTPS 트래픽도 분석 가능합니다.
  • MITMproxy: 중간자 공격(Man-in-the-Middle)을 시뮬레이션하여 트래픽을 분석합니다.
  • tcpdump: 텍스트 기반의 패킷 분석 도구로, 서버 환경에서 유용하게 사용됩니다.

3.2. 패킷 스니핑을 통한 진행 절차

  1. 패킷 스니핑 도구를 설치하고, 필요한 경우 앱이나 장치에 프록시 설정을 합니다.
  1. 앱을 실행하고 데이터를 주고받는 동안 패킷 스니핑 도구로 트래픽을 캡처합니다.
  1. 캡처한 패킷을 분석하여 API 엔드포인트, 사용된 프로토콜, 전송된 데이터 형식 등을 파악합니다.
  1. 분석을 통해 알아낸 API 엔드포인트에 어떤 요청을 보내고 응답을 어떻게 받는지를 파악해야 합니다. 일반적으로 RESTful API의 경우 GET, POST, PUT, DELETE 등의 HTTP 메서드가 사용됩니다.
  1. 필요한 데이터나 패턴을 확인하면, 이를 바탕으로 크롤링 코드를 작성합니다.
 
 

4. 결론

API 엔드포인트(End Point)에는 유저 개인의 로그인 정보 등 민감한 정보가 노출될 위험성이 있습니다. 또한 앱의 업데이트로 API 엔드포인트가 변경될 가능성이 늘 존재하기 때문에 이에 대한 대응책과 함께 운용하시길 권장합니다.
 

이 글도 함께 읽어보세요: