#MobSF 모바일 보안(취약점 진단) 자동화 프레임 워크

2020. 1. 5. 21:08 보안 이야기/취약점

 

안녕하세요. 오늘은 모바일 취약점 진단 업무를 함에 있어서 

 

조금 수월하게 진행할 수 있도록 해주는

 

자동화 프레임워크를 소개해볼까 하는데요.

 

저도 이번에 들어간 연간 사업에서 모바일 앱도 진행을 하는데

 

시간을 단축시키고자 찾아본 여러 자동화 프레임워크 중에 가장 베스트로 판단한 프레임워크를 소개합니다.

 

예전에 네이버 블로그를 운영할 때 MARA_Framework를 소개했었는데요

 

이 프레임워크는 윈도우를 지원하지 않았던 것으로 기억이 납니다!

 

하지만 , 오늘 소개할 MobSF는 윈도우에서도 잘~ 동작하는 것을 확인했고

 

어렵지 않게 지난번에 소개한 Anaconda를 이용해서 셋팅을 해보도록 하겠습니다.

 

Anaconda 셋팅 및 활용 방법!

 

먼저 MobSF는 뭘까요?

Mobile-Security-Framework의 약자인데요 

번역해보면


모바일 보안 프레임 워크 (MobSF)는 정적 및 동적 분석을 수행 할 수있는 자동화 된 올인원 모바일 애플리케이션 (Android / iOS / Windows) 펜 테스트, 맬웨어 분석 및 보안 평가 프레임 워크입니다. 


 

정적 및 동적 분석을 자동화해 주기 때문에 

 

if (정상적으로 동작) {

많은 부분 수고가 줄어듦

}

ㅋㅋ 

자 바로 git을 이용해 소스코드를 다운받아 설치해보도록하겠습니다.

 

https://github.com/MobSF/Mobile-Security-Framework-MobSF

 

 

다운받은 코드들을 보니 아주 친절하게 setuprun이 보여집니다.

윈도우에서 진행을 할 것이기 때문에

(대부분의 취약점 진단 사업의 환경은 윈도우이기 때문이기도 함)

 

setup.bat를 열어보도록 하겠습니다.

@echo off
where python >nul 2>&1 && (
  deactivate
  echo [INSTALL] Found Python3
  pip3 >nul 2>&1 && (
    echo [INSTALL] Found pip3
    python -m pip install --upgrade pip
  ) || (
    echo [ERROR] pip3 is not available in PATH
    pause
    exit /b
  )

  if exist "C:\\Program Files\\OpenSSL-Win64\\bin\\openssl.exe" (
    echo [INSTALL] Found OpenSSL executable
  ) else (
   echo [ERROR] OpenSSL executable not found in [C:\\Program Files\\OpenSSL-Win64\\bin\\openssl.exe]
   echo [INFO] Install OpenSSL - https://slproweb.com/download/Win64OpenSSL-1_1_1d.exe
   pause
   exit /b
  )

  if exist "C:\\Program Files (x86)\\Microsoft Visual Studio" (
    echo [INSTALL] Found Visual Studio Build Tools
  ) else (
    echo [ERROR] Microsoft Visual C++ 14.0 not found in [C:\\Program Files (x86^)\\Microsoft Visual Studio]
    echo [INFO] Install Microsoft Visual Studio Build Tools - https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools^&rel=16
    pause
    exit /b
  )

  echo [INSTALL] Using venv
  rmdir "venv" /q /s
  python -m venv ./venv
  .\venv\Scripts\activate

  set LIB=C:\Program Files\OpenSSL-Win64\lib;%LIB%
  set INCLUDE=C:\Program Files\OpenSSL-Win64\include;%INCLUDE%

  echo [INSTALL] Installing dex enabled yara-python
  pip install --upgrade wheel
  rmdir /q /s yara-python
  pip wheel --wheel-dir=yara-python --build-option="build" --build-option="--enable-dex" git+https://github.com/VirusTotal/yara-python.git@v3.10.0
  pip install --no-index --find-links=yara-python yara-python
  rmdir /q /s yara-python

  echo [INSTALL] Installing Requirements
  pip install -r requirements.txt
  
  echo [INSTALL] Clean Up
  CALL scripts/clean.bat y

  echo [INSTALL] Migrating Database
  python manage.py makemigrations
  python manage.py makemigrations StaticAnalyzer
  python manage.py migrate
  echo Download and Install wkhtmltopdf for PDF Report Generation - https://wkhtmltopdf.org/downloads.html
  echo [INSTALL] Installation Complete
) || (
  echo [ERROR] python3 is not installed
)

 

보면 openssl을 사용하는 것을 볼 수있구요

C++ visual studio Build Tools이 필요하고

 

해당 스크립트에서는 virtual env를 사용하는 것을 볼 수있습니다.

이부분은 생략해도 될것같은데요 

 

왜냐면 저희는 Anaconda를 사용해서 셋팅을 할 예정이기 때문입니다.

 

그 외에도 yara-python과 requirements에 기입된 모듈을 설치하고 셋팅이 완료되는 것을 볼 수 있습니다.

 

yara-python이 어쩌면 가장 중요한 모듈일 수 있는데요

 


yara 파이썬은 무슨 역할을 할까요 ?

Yara는 문자열이나 바이너리 패턴을 기반으로 악성코드를 검색하며 이러한 악성코드를 분류할 수 있게 하는 도구이다. C와 Python과 같은 문법으로 Yara Rule을 작성하는 것으로 악성코드가 어떤 기능을 하는지, 어떠한 조건에 포함되는지를 쉽게 확인할 수 있으므로 많이 사용되고 있다. Yara는 설명, 이름 규칙, 문자열의 집합 그리고 Bool 식으로 규칙 로직을 결정한다. 또한, 단순히 문자열과 바이너리 패턴만을 이용해서 파일의 시그니처를 찾는 것뿐만 아니라, 특정 Entry Point 값을 지정하거나, File Offset, Virtual Memory Address를 제시하고 정규 표현식을 이용하여 효율적인 패턴 매칭이 가능하다.

출처: https://kali-km.tistory.com/entry/Yara를-사용해보자 [Kali-KM_Security Study]


 

자 그럼 설치를 해보기 전에 콘다를 activate한 후 setup.bat를 실행해줍니다.

conda activate py37(env 이름)

잘 나가다나 Openssl을 찾을수 없다는 에러가 나오는데요 

 

이런 에러가 나올때마다 하나씩 설치를 해줍니다.

 https://slproweb.com/download/Win64OpenSSL-1_1_1d.exe

https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 

 

이번엔 Visual Studio Build Tools!

빌드 도구를 체크해주고

 

다시 setup.bat를 돌리게 되면

 

여러가지 파이썬 모듈들이 설치되게 됩니다

 

아 저는 conda를 사용하기 때문에 venv 부분을 제거해주었습니다(아래 부분)

  echo [INSTALL] Using venv
  rmdir "venv" /q /s
  python -m venv ./venv
  .\venv\Scripts\activate

 

꽤나 오랜시간이 걸렸는데요

 

어느정도 기다리다보면 위 그림과 같은 배너가 보여집니다.

 

이제 거의 다된거 같습니다.

 

끝이 났는데요

 

PDF Report Generation을 설치하라는 문구가 나옵니다.

 

이부분은 나중에 취약점 진단 후 결과를 PDF로 제너레이트 해주는 부분인데요

 

이 프로그램을 설치해주지 않으면 PDF 변환 시 에러가 발생하게 됩니다

 

 

설치가 완료되었는데요!

이제

run.bat를 실행해보도록 하겠습니다.

 

 

짠 실행된 모습이구요

 

이제 apk 파일을 올려서 간단하게 기능이 어떤것들이 있는지 확인해보겠습니다.

 

apk 파일을 업로드하면 분석중이라는 문구가 뜸니다.

 

먼저 정적분석과 동적분석이 있는데요

 

정적 분석을 보면 Activity, services, receviers 등에서 exported 된 부분이 몇개나 있는지

 

그리고 manifest도 보여주고요

 

자동으로 디컴파일해서

 

java 코드 smali 코드 등으로 변환해 보여줍니다

 

권한 부분도 분석해서 보여주기 때문에

 

일일이 여러 툴을 이용해서 디컴파일하고 볼 필요가 줄어들어서

 

업무가 아주 많이 간결해지도록 할 수 있는데요

 

exported 가 true로 되어 am 명령어로 강제 호출이 가능한 부분들도

 

쫙~~~ 보여줍니다. 업로드 분석 단 1분정도 밖에 소요되지 않는데 말이죠

 

하지만! 여기 뜬다고 다 취약점은 아니겠죠? 꼭 am 명령어로 한번씩 때려보세요 ^^

 

이 외에도 스트링 분석 인증서 분석 등

 

아주 간결하게 정적 분석 시 봐야할 부분들을 정리해서 보여줍니다.

 

동적분석을 해보려고 했는데

집에서는 android10밖에 없기 때문에

 

환경 구성에 어려움이 있어 가져온 이미지로 설명하겠습니다.

 

 

 

메뉴를 보면 디바이스에서 exported 액티비티를 테스트할 수도있고

 

스크린 샷 로그캣 등을 확인 할수 있구요!

 

아주아주 꿀팁인 FRIDA를 바로 즉석에서 사용할 수있습니다.

 

ssl pinning을 제거하는 부분, 루팅 탐지 부분 등을 FRIDA 스크립트를 디폴트로 사용할 수있구요

 

바로바로 스크립트를 작성해 적용해 볼수가 있습니다.

 

엄청나게 좋은 기능이죠?

 

여기까지 모바일 취약점 진단의 점검시간을

 

아주 간결하게 많은 시간을 단축시켜줄 MobSF 프레임워크

살펴봤습니다.

 

동적 분석은 추가적으로 더 작업이 필요한 것은 당연하지만

 

정적분석에 드는 시간을 아주 많이 단축시켜줄 것 같습니다.

 

업무를 효율적으로 간결하게 만들어줍니다.

 

이상입니다!