METASPLOIT 사용법
Metasploit은 펄스크립트를 사용하는 침투테스트도구이다.
1. METASPLOIT 경로
metasploit은 Kali Linux에 기본적으로 설치되어 있다. Kali 기준으로 경로는 /usr/share/metasploit-framework/ 다.
/user/share/metasploit-framework 경로를 살펴보면 msf*의 다양한 실행파일들이 있다. 여기서 우리가 사용할 실행파일은 msfconsole로 metasploit framework console의 약자고 저장되어있는 exploit 코드나 payload등을 간단하게 가져와 사용할수 있고 명령어를 통해 다른 기능들도 사용할 수 있다. GUI 버젼도 존재하지만 너무 느리고 멋이 없다.
msfconsole을 실행하기에 앞서 exploit코드들이 있는 경로를 확인해보자. msfconsole framework에 맞게 작성된 외부 파일을 가져와 임포트 하기 위해서는 경로를 알고 있는게 많은 exploit 코드들을 관리하기 편하다.
/usr/share/metasploit-framework/modules/exploits의 경로로 들어가면 exploit 코드들을 여러 분류로 나누어 정리해 놓았다. windows/ftp 관련 exploit 코드들만해도 엄청 많다. 모두 .rb 파일로 metasploit-framework는 ruby로 프레임워크에 맞는 문법에 따라 작성된 코드만 해석할 수 있다.
msfconsole을 이용해 exploit을 테스트해 보려는데 msfconsole에 있는 exploit코드에 맞는 버젼의 프로그램을 찾기가 귀찮아서 exploit-db 사이트에서 프로그램과 msfconsole용 exploit코드가 모두 업로드 되어있는 것을 찾았다.
BadBlue 라는 간단한 웹 서버 프로그램으로 더 이상 업데이트도 없고 회사가 없어진 것 같다.
exploit code파일은 16806.rb로 msfconsole에 맞게 작성되어있다. 이제 이 파일을 msfconsole에서 임포트해야 한다.
exploit code를 모아놓은 폴더중 적당히 맞는 범주의 폴더에 16806.rb 파일을 넣고 msfconsole을 실행 시킨다.
GEEK하다. 재시작하면 계속 다른 ASCII ART가 나온다. (http://www.network-science.de/ascii/ 문자를 ASCII ART로 바꿔주는 사이트) 처음 화면에서는 metasploit version, 저장되어 있는 exploit, payloads 등등의 정보를 알려준다. exploit code만 1420개나 있지만 바로 exploit code를 실행시켜 공격에 성공할 수 있는 건 별로 없다. (운영체제, 버젼, 언어등 환경의 문제나 잘못된 exploit code)
2. METASPLOIT 명령어
먼저 콘솔 옵션들을 확인해 보자. help라고 치면 콘솔 옵션을 확인할 수 있다.
- 저장된 exploit code확인 명령어
msf > show exploits
exploit code가 엄청나게 많다. 이름과 날짜와 위험수준 그리고 어떤 취약점을 이용하는 공격인지 어느 프로그램의 몇 버젼을 대상으로 하는지 간단한 설명이 써있다. 이중에서 내가 필요한 exploit code를 찾아 해킹공격을 할수있다.
앞에서 exploit code경로에 추가한 Badblue exploit code를 msfconsole로 임포트하려면 reload_all을 치면된다.
- 전체 module 다시 로딩
msf > reload_all
경로에 추가한 exploit code를 임포트 했으면 이제 제대로 임포트가 되었는지 찾아보자.
- 저장된 자료(exploit, payloads, encoder등)에서 문자열로 검색하기
msf > search “문자열”
msfconsole에서는 tab으로 자동완성도 안된다. 귀찮아서 그냥 /exploit/ 경로안에 바로 넣었다.. 추가한 exploit code인 16806, BadBlue Buffer Overflow 가 보인다. 제대로 임포트가 되었다. 옛날에 백트랙인가 칼리인가에서 아무리 exploit 파일을 경로에 추가해도 임포트가 안된적이 있었다. 알고보니 컴퓨터에 metasploit이 두개가 깔려 있었고 /bin/에 있는 msfconsole 경로가 아닌 다른곳에 설치되어 있는 msfconsole에 exploit 파일을 넣었었다. 임포트가 안될 때에는 msfconsole을 바로 실행하지말고 ./msfconsole을 이용해서 실행해보자.
exploit을 장전하자.
- exploit code 장전
msf > use “EXPLOIT_NAME”
쉘에도 exploit이 장전되었다. 이제 희생자를 조준하는 설정들을 맞춰줄 일이 남아있다. exploit 마다 다 설정들이 다르니 확인하면서 환경에 맞게 추가 해주면 된다.
- exploit option 보기
msf exploit(exploit) > show options
BadBlue 의 exploit코드의 설정은 몇개 없다. Proxies, RHOST, RPORT, VHOST가 있는데 Required만 채워주면 공격을 실행할 수 있고 나머지는 진짜 옵션이다. Description에 설명에 맞는 값을 채워 넣어주면 된다.
희생자 (172.16.219.131) : Windows XP Pro SP3, BadBlue Webserver
공격자 (172.16.219.130) : Kali Linux, msfconsole
- option 설정하기
msf exploit(exploit) > set “NAME” “VALUE”
RPORT는 디폴트로 80으로 설정되어 있고(보통 타겟 프로그램 디폴트 값) set 명령어로 RHOST를 설정해 주었다. show options로 확인할 수 있다.
BadBlue exploit에는 필요 없지만 target, payload도 공격자의 입맛에 맞게 수정할 수 있다.
- payload 선택하기
msf exploit(exploit) > set PAYLOAD “PAYLOAD_NAME”
- target 목록 보기
msf exploit(exploit) > show targets
- target 선택하기
msf exploit(exploit) > set target “NUM”
이렇게 타겟에 맞게 옵션을 설정 해준다. 설정이 완료되면 설정에 맞게 공격을 수행할 수 있다.
3. EXPLOIT
- exploit 하기
msf exploit(exploit) > exploit
exploit 명령어를 입력하면 .rb 파일의 exploit코드를 실행한다.
exploit 이 실행되면서 몇개의 로그가 찍히고 Meterprerter session이 성립된다. exploit 코드가정상적으로 실행되어 payload까지 진입하고 payload에 의해서 세션 연결이 되었다. (다른 payload를 사용하면 session을 맺지 않고 공격할수도 있다.) 쉽게 말해 타켓프로그램의 취약점을 이용해서 넷버스의 서버파일을 실행한것과 비슷하다.
여튼 meterpreter > 쉘이 떨어지면 공격에 성공한 것이다. meterpreter 쉘은 다양한 공격 명령들을 수행할 수 있다. 여기서도 help (?) 명령어를 치면 공격 가능한명령어들을 확인할 수 있다.
굉장히 다양한 공격을 수행할 수있다.
난 희생자의 컴퓨터정보를 얻어오는 sysinfo 명령어와 상대 모니터출력을 흠쳐오는 screenshot 명령어를 수행해 보았다.
희생자의 컴퓨터 정보를 알아내고 스크린샷도 저장이 되었다.
희생자의 모니터도 흠쳐 볼 수있다.
작성자가 댓글을 삭제했습니다.
답글삭제우왕 쩐당
삭제뿌잉 지린다
답글삭제원따봉
답글삭제우와 ㅎㅎ
답글삭제즐감
답글삭제ㅎㅎㅎ 감사합니다
답글삭제퍼가요~♡
답글삭제안녕하세요 처음 공부중인 학생입니다 ㅠㅠ
답글삭제혹시 rb파일을 어떻게 msf콘솔에 올리는지 알려주실수 있을까요?
파일은 일단 칼리리눅스에 다운했는데 드레그앤 드랍이 안되네요..