목표 시스템의 네트워크 보안 상태에 따라 특정 포트의 traffic을 허용하지 않는 경우가 있다. 그런 경우 시스템이 허용하는 포트를 알아내어 LPORT로 지정해주어야한다. metasploit의 reverse_tcp_allports payload를 사용하여 어느 포트로 통신을 할 수 있을지 도움을 준다. 타깃 windows 시스템에 allports payload를 시험해본다.
allports payload는 자동으로 1번 포트부터 65535 포트까지 연결을 시도한다.
win XP는 별도의 방화벽이 없기 때문에 1번 포트로 바로 연결된다.
몇몇 네트워크 필터의 경우 특정 프로토콜을 가진 트래픽만 허용하기도 한다. 예를 들어 80번 포트로 전송되는 트래픽이 HTTP가 아닌 경우 차단한다. Meterpreter HTTP & HTTPS payload는 인터넷 익스플로러의 proxy 설정을 사용하여 인터넷 연결을 유지한다. 따라서 proxy 설정이 되지 않은 사용자의 경우 실패할 수도 있다.
포트를 사용하는 서비스를 표적으로 하는 대신, 악성파일을 만들어서 취약한 소프트웨어가 실행되는 경우 시스템을 손상시키는 방식을 사용한다. 프로그램의 취약점을 유도할 수 있는 데이터를 입력하여 그 실행 상태를 탈취할 수 있다. 네트워크를 통한 공격이 아니기 때문에 사용자가 악성 파일을 실행 혹은 열람하도록 유도해야한다.
웹 브라우저는 웹 소스코드를 랜더링하여 웹 페이지를 구성한다. 소스코드에 악성 코드를 삽입하면 브라우저를 하이재킹할 수 있다.
Metasploit을 사용하여 Aurora exploit을 시도한다. Aurora 공격은 Explorer의 취약점을 이용한 공격으로 구글, 어도비, 야후 등의 기업을 타깃으로 발생했던 공격이다.
windows/browser/ms10_002_aurora 모듈을 사용한다.
Client side 모듈은 Server side 공격의 remote host 지정 대신 타깃의 브라우저가 접근할 서버를 생성한다. SRVHOST로 서버의 IP를, SRVPORT로 서버의 포트를 지정할 수 있다.
URIPATH를 설정하면 특정 URL을 지정할 수 있다. 지정하지 않은 경우 랜덤 URL이 사용된다.
RVHOST IP는 kali, SRVPORT는 웹 서버 포트인 80으로 지정한다. payload는 이전 공격들과 동일하게 meterpreter/reverse_tcp를 사용한다.
exploit하면 정상적으로 구동된 서버와 meterpreter handler를 확인할 수 있다.
이제 타깃 win XP에서 익스플로러를 사용하여 해당 페이지로 접속을 시도한다.
kali에서 meterpreter 세션이 정상적으로 연결된 것을 확인할 수 있다.
자동으로 세션이 연결되지 않기 때문에 seesions -i [session id]를 사용하여 meterpreter 세션과 연결할 수 있다.
win XP에서는 세션이 연결된 순간 브라우저 작동이 멈춘다. 이 경우 사용자가 이상함을 감지하여 브라우저를 종료할 수 있다. 브라우저가 종료되는 순간 meterpreter 세션도 끊긴다. meterpreter가 타깃 프로세스의 메모리 안에서 동작하기 때문이다.
kali의 /usr/share/metasploit-framework/scripts/meterpreter에 저장된 스크립트 중, migrate.rb를 사용하면 meterpreter를 다른 프로세스의 메모리로 옮길 수 있다. run 명령어로 meterpreter에서 스크립트를 실행시킬 수 있다. migrate는 새로운 프로세스를 만들어서 이동시킬 수 있다. 이때 이동할 프로세스 이름과 PID를 지정할 수 있다.
metasploit의 advanced 설정을 통해서 스크립트를 자동 실행시킬 수 있다. 세션이 연결되자마자 migrate 스크립트가 실행되게 하면 사용자가 이상을 느끼고 브라우저를 종료해도 다른 메모리로 이동한 meterpreter와의 연결을 유지할 수 있다.
이제 다시 exploit을 시도한다.
세션 연결과 함께 migrate 스크립트가 실행되어 note.pad의 프로세스로 meterpreter가 이동한 것을 볼 수 있다. 익스플로러 프로세스가 종료되어도 meterpreter 연결은 유지된다. 단 이 방법은 migrate 하는 시간이 꽤나 소요되기 때문에 그전에 프로세스가 종료되는 경우 소용이 없다.
그 대응방안으로 meterpreter의 PrependMigrate 옵션을 사용할 수 있다. 이 옵션을 true로 설정하면 조금 더 빨리 migrate할 수 있다.
PDF 뷰어 중 하나인 Adobe Reader의 취약점을 사용하여 exploit을 수행할 수 있다. 타깃 win XP에 설치된 Adobe Reader 8.1.2 버전에는 스택 버퍼 오버플로우 취약점이 존재한다. 이것을 이용한 exploit/windows/fileformat/adobe_utilprintf 모듈을 사용한다.
이 모듈은 악성 pdf를 생성한다. pdf가 adobe reader로 열리는 경우 payload가 실행된다. payload는 default인 windows/meterpreter/reverse_tcp를 사용한다. exploit하면 악성 pdf가 생성되어 저장된다. 이 pdf를 웹 서버를 사용하여 win XP가 다운로드하고 열람하게 한다.
대응하는 handler를 실행하는 것도 잊지 않는다. ExitOnSession 옵션을 false로 하면 여러 세션을 동시에 유지할 수 있다.
win XP에서 해당 pdf를 열람하는 순간 meterpreter session이 연결된다.
PDF 파일에 악성 실행파일을 포함시켜서 공격할 수도 있다. exploit/windows/fileformat/adobe_pdf_embedded_exe 모듈을 사용한다. 이 경우 pdf를 열자마자 exploit되는 대신, pdf가 실행된 후 embedded 실행 파일을 사용자가 허용하면 악성 행위가 시작된다.
EXENAME으로 삽입될 실행 파일의 이름을 지정할 수 있다. 지정하지 않는 경우 payload가 생성하는 이름으로 사용된다. INFILENAME은 실행파일을 삽입할 대상 pdf 파일이름을 지정하는 옵션이다. LAUNCH_MESSAGE 옵션으로 실행 파일 허용을 위하여 사용자에게 보여줄 메시지를 지정할 수 있다.
위와 같이 옵션을 지정한 뒤 exploit하면 악성 프로그램이 삽입된 pdf가 생성된다. handler를 실행시킨 뒤 타깃 win XP에서 해당 pdf를 열람한다.
pdf를 여는 순간 위와 같이 경고 창이 뜬다. Open을 선택하면 embedded 실행파일이 실행된다. kali를 보면 session이 연결되어 meterpreter가 실행된 것을 확인할 수 있다.
JRE의 취약점을 사용하여 exploit할 수 있다. 버전 7의 update11 이전의 JAVA는 exploit/multi/browser/java_jre17_jmxbean을 사용하여 exploit할 수 있다.
브라우저에서 사용되는 JRE의 취약점을 노린 공격이므로 서버를 구축할 필요가 있다. SRVHOST와 SRVPORT를 지정한다.
payload로는 JRE에서 실행될 수 있는 java/meterpreter/reverse_http를 사용한다. 타깃 win 7에 방화벽이 존재하므로 합법적인 http 트래픽으로 보이도록 reverse_http payload를 사용해야한다. 자동으로 LPORT가 8080으로 설정된다. exploit하면 handler와 함께 지정된 경로로 웹 서버가 시작된다.
타깃 win 7에서 해당 페이지에 접근하면 meterpreter 사용을 위한 세션이 연결된다. 마찬가지로 sessions -i 명령으로 meterpreter를 실행할 수 있다.
HTTP meterpreter는 session이 끊겨도 다시 연결을 시도한다. 사용자가 해당 페이지를 재방문하지 않아도 exploit이 종료되지 않는한 meterpreter는 handler와의 연결을 계속 시도한다.
exploit/multi/browser/java_signed_applet을 사용하면 보안 패치가 적용된 JAVA에도 exploit을 실행할 수 있다. 이 경우 사용자에게 해당 페이지를 사용할 것인지를 묻고, 사용자가 허용하는 경우 JAVA 코드에 포함된 악성 행위가 시작된다.
이 모듈은 JAVA applet을 생성한다. JRE를 사용하는 모든 타깃을 대상으로 할 수 있도록 show targets로 타깃을 조회하고 GEneric을 선택한다. payload 또한 JAVA 형식의 java/meterpreter/reverse_tcp를 사용한다.
타깃 win 7에서 해당 페이지에 접속하면 보안 경고창이 뜬다. applet 실행을 허용하면 meterpreter 세션이 연결된다.
browser_autopwn 모듈은 모든 browser와 browser add-on 모듈을 불러와 브라우저가 서버와 연결되면 exploit 가능한 공격을 제시한다.
exploit 한 뒤 지정한 웹 페이지로 win 7이 접속하는 순간 가능한 모든 exploit이 실행된다. 총 20개의 exploit이 실행된 것을 볼 수 있다.
음악 재생 프로그램인 Winamp의 설정 파일을 바꿔치기 하여 사용자가프로그램을 실행하면 악성 설정 파일이 실행되도록한다. exploit/windows/fileformat/winamp_maki_bof 모듈을 사용한다.
이 모듈은 Winamp 5.55 버전의 버퍼 오버플로우를 활용한다.
모듈은 payload를 사용하여 설정파일인 Maki 파일을 생성한다. exploit 명령으로 파일을 생성한 뒤 handler를 실행한다.
이제 사용자가 이 파일을 정상적인 Winamp 설정 파일로 생각하도록 할 필요가 있다. Win 7에서 C:\Program Files\Winamp\Skins에서 디폴트 스킨인 Bento 폴더를 복사하여 Kali로 가져온다.
폴더 이름을 바꾼 후 scripts에 있는 mcvcore.maki 파일을 생성한 악의적 maki 파일로 바꿔치기 한다. 폴더 전체를 압축하여 웹 서버에 업로드한다.
Win 7에서 이 파일을 다운로드하여 압축을 해제한다. 그리고 skins에 이 폴더를 포함시킨다.
이제 winamp를 실행하여 options > Skins에서 새로 추가한 스킨을 선택한다. 그럼 Winamp 창이 꺼지고 kali에서는 handler가 세션을 연결한 것을 확인할 수 있다.
python 기반의 오픈소스 사회 공학 도구. setoolkit 명령으로 kali에서 사용할 수 있다.
사회 공학 공격으로 사용하기 위하여 1을 입력한다.
Spear-phising은 표적이 명확한 상태에서 실행하는 phising 공격이다. SET의 Spear-phising 모듈은 악성 파일을 생성한다. 이 파일을 이메일 등의 경로를 통해 사용자에게 보내고 동시에 metasploit handler를 자동 생성한다.
1번 옵션은 악성 파일을 표적의 이메일로 전송하며 지정된 payload에 맞는 metasploit listener를 구축한다.
2번 옵션은 공격자가 원하는 metasploit payload로 악성 파일을 생성한다.
3번 옵션은 공격자가 원하는 새로운 이메일 탬플릿을 만들 수 있다.
1번 옵션을 선택한 뒤 payload를 지정한다.
이전에 시도했던 Adobe pdf 공격을 이메일로 시도하려면 14번을 선택하면 된다. SET에는 이처럼 metasploit이 제공하는 다양한 공격을 공유한다. metasploit처럼 어떤 payload를 악성 파일에 담을지 선택한다. 앞선 공격들과 동일하게 Windows/Meterpreter/Reverse_TCP를 선택한다.
자동으로 payload를 위한 옵션 설정으로 넘어간다. listener의 정보를 kali로 지정한다.
공격에 사용할 악성 파일이 만들어지고 나면 이 파일의 이름을 지정할 수 있다. 사용자가 읽어볼만한 그럴듯한 파일 이름으로 변경한다. 이제 이 파일을 전송할 이메일을 지정할 수 있다. 하나의 타깃에만 보낼 수도 있고 list를 제공하여 여러 타깃에게 전송하는 것도 가능하다. 우선은 1번을 선택한다.
이메일 탬플랫을 선택하거나 직접 탬플랫을 작성할 수 있다.
1을 입력하여 SET의 기본 탬플릿을 사용한다.
탬플릿을 고른 후, 이제 타깃을 설정한다. 타깃의 이메일 주소를 입력하고 gmail을 선택하여 이메일을 보낼 이메일 주소를 입력한다. FROM NAME을 입력해서 보내는 이 이름을 지정할 수도 있다. (gmail은 송수신 이메일을 감사하므로 악성 pdf 파일 전송은 실패할 가능성이 높다.)메일을 보내고 난 후, listener를 구축할 수 있다. SET가 metasploit를 실행하여 payload에 맞게 listener를 설정한다.
SET의 메인 메뉴로 돌아와서 2번 Website Attack Vectors를 선택한다.
1번 Java Applet 공격은 앞서 시도했던 Java signed applet 공격과 같다.
2번 Metasploit Browser Exploit은 metasploit의 모든 browser exploit을 SET가 자동으로 실행한다.
3번 Credential Harvester Attack은 사용자가 crendential을 입력하도록 유도하는 악성 웹 사이트를 생성한다.
4번 Tabnabbing Attack은 사용자가 페이지 로딩이 오래걸릴 때 다른 탭으로 이동하는 특징을 이용한 공격이다. 사용자가 다른 탭으로 넘어간 순간, 악성 웹사이트를 로딩한다. 이때 악성 웹사이트는 유효한 사이트를 clone하여 사용자를 속인다.
3번 Credential Harvester Attack을 시도한다. 생성할 웹 페이지의 탬플랫을 고를 수 있다. 혹은 이미 존재하는 사이트를 clone하는 것도 가능하다.
기본 탬플릿을 선택하면 이제 얻어낸 credential를 보낼 공격자의 주소를 입력할 수 있다.
구글 탬플릿을 시도한다. 웹서버가 동작한다.
사용자가 가짜 사이트에 자신의 credential을 입력하면 사용자는 로그인되지 않은채로 정상적인 구글 페이지로 리다이렉트 된다.
Kali에서 사용자가 입력한 패스워드가 평문 그대로 전송된 것을 볼 수 있다.
다수의 타깃에게 이메일을 보내기 위하여 Mass Mailer Attack을 시도할 수 있다. 타깃의 이메일 주소를 txt파일에 한 줄씩 작성한다. SET 메인 화면에서 5번 옵션을 선택한다.
이메일 주소가 담긴 txt 파일의 위치를 지정해준다. 이제 spear-phising 처럼 보내는데 사용할 이메일 주소를 입력한다.
Email subject를 입력하고 메시지를 html로 보낼지 plain으로 보낼지 선택한다. 그후 메시지 본문을 입력할 수 있다. 이때 html 형식을 선택하여 악성 페이지 링크를 a태그로 심어놓을 수 있다.