네트워크 기반 공격
Sniffing (스니핑)
- 통신 경로 상에서 정보를 훔쳐보는 행위
- 일반적으로 Sniffing 이 가능하려면 Spoofing 이 이루어져야하는 구조
- 공격 조건
- Media 공유
- 정보를 가지고 있는 신호가 공격자의 시스템에 도착해야 함
- HUB 환경 : 피해자와 공격자가 같은 Collision Domain (같은 허브 단위) 에 위치해야 함
- SWITCH 환경 : 피해자의 전기적인 신호를 공격자에게 오도록 유도할 수 있는 추가공격 (switch jamming 등) 이 필요
- 공격자 시스템의 NIC 가 Promiscuous 모드로 동작
- Promiscuous 모드 : 목적지 주소가 본인의 MAC 주소와 달라도 Filtering (DROP) 하지 않고 무차별적으로 데이터를 받아서 처리
- 소프트웨어를 통해 활성화 (네트워크 진단 도구 등을 실행하는 동안에만 자동으로 promiscuous 모드를 켜 줌)
- 윈도우 : winpcap, npcap (같이 설치하면 에러 발생할 여지 존재)
- 리눅스 : libpcap, ifconfig
- 리눅스에서 root 권한으로 수동 설정
- 설정 : ifconfig eth0 promisc
- 해제 : ifconfig eth0 -promisc
- 기본적으로 NIC 는 Bypass 모드라서 2 계층에서 패킷의 목적지 MAC 주소가 본인의 MAC 주소와 다르면 Filtering (DROP) 하므로 Promiscuous 모드로 설정해야함
- Frame 이 NIC 에서 Filtering 되는 것을 방지
- 공격자 시스템에서 Sniffer 프로그램 사용 (ex. wireshark)
- 기본적으로 3 계층에서 목적지 IP 주소가 본인의 IP 주소가 다르면 DROP
- NIC 에서 2 계층 데이터인 Frame 을 받아들여도 상위 계층인 3 계층 (IP) 에서 Filtering (DROP) 하기 때문에 Data Link Interface 를 이요하여 Frame 을 복제해서 화면에 출력
- Sniffing 할 데이터가 암호화 되지 않아야 함
- 암호화된 데이터는 Sniffing 만으로 정보 확인 불가
- Passive Sniffing
- 일반적으로 HUB 환경에서 스니핑하여 정보를 획득하는 공격
- Active Sniffing
- 일반적으로 SWITCH 환경에서 추가적인 공격을 통해 데이터의 전달 흐름을 변경하여 스니핑으로 정보를 획득하는 공격
- 2 계층 공격 : MAC 주소를 기반으로 공격
- Switch Jamming (MAC Flooding), ARP Spoofing (ARP cache Poisoning), ...
- 3 계층 공격 : IP 주소를 기반으로 공격
- ICMP Redirect, DHCP Spoofing, ...
- MITM (Man In The Middle) 공격 형태가 될 수 있음
Spoofing (스푸핑)
- 침입, 공격의 목적으로 데이터를 위/변조 하는 모든 행위
- 일반적으로 Spoofing 을 선행한 후 Sniffing 등 추가 공격이 가능해지는 구조
- 기본적으로 무결성을 깨트리는 공격
- 사후 공격을 통해 기밀성, 가용성을 추가로 공격
ARP Spoofing (= ARP Cache Poisoning)
- ARP 프로토콜을 이용하여 MAC 주소를 변조 (ARP cache table 을 변조) -> 신호의 흐름을 변경하여 신호를 해커에게 오도록 조작하는 Sniffing 을 위한 사전 공격
- 데이터 변조 후 본인이 데이터를 받은 후 차단할지 훔쳐볼지 등 목적을 정함
- ARP cache table
- ARP : 인접장비의 IP 주소를 알고 있을때 brodcast ARP Request 를 통해 MAC 주소를 알아오는 프로토콜 (IP -> MAC 변환)
= 논리적 주소 (3 계층의 IP 주소) 를 이용해 물리적 주소 (2 계층의 MAC 주소) 를 알아냄
- ARP 를 통해 IP 주소에 해당하는 MAC 주소를 알아와서 저장되는 곳
- 스위치가 아닌 PC 나 서버, 라우터에 존재
- 같은 네트워크의 인접 장비간의 통신을 위해 존재
- ex) A, B, 해커 가 하나의 스위치에 연결돼있을때, A -> B 통신을 위해 A 가 B 의 IP 로 ARP 로 처음 MAC 주소 요청할 때 브로드캐스트로 보내는데 제 3 자인 해커는 해당 패킷을 2 계층에서 디캡슐레이션하면 3 계층 정보인 IP 가 본인의 IP 와 달라서 DROP 해야하는데 해커는 해당 데이터를 받아서 본인이 B 라고 살짝 늦게 응답함. A 는 본인의 ARP cache table 에 늦게 들어온 최신 정보인 해커의 응답으로 업데이트함 (IP, 통신장비 (MAC) 가 교체되는걸 최신 정보로 반영해야 현재 통신이 가능해지기 때문에 가장 늦게 들어온 정보로 업데이트함)
- 해커는 ARP 요청이 없어도 계속 ARP 응답을 보내서 정보를 임시 저장하는 ARP cache table 을 계속 갱신시킴
- ARP cache table 을 확인하거나 wireshark 로 통신중인 패킷을 확인하면 서로 다른 MAC 주손데 IP 주소가 동일하면 ARP spoofing 공격을 받고 있다고 판단 가능
- A -> B 에게 ping 이나 다른 통신 기반 서비스 (web, ftp 등) 를 이용하면 해커가 받게 되는데 직접 응답은 못함
- A 는 B 에게 A -> 스위치 -> B 로 보내지만 실제로는 해커가 받아서 해당 신호를 B 에게 전달하는 A -> 스위치 -> 해커 -> 스위치 -> B 형태로 해커를 낀 형태 (해커는 forwarding 가능해야 함) 가 됨 (MITM 공격 형태)
- MITM 형태가 되면
- 데이터 훔쳐보기 가능 : Sniffing
- 데이터 변조 가능 : Spoofing
- 데이터 삭제 등 통신 차단 가능 : DOS (해커가 forwarding 안 할 시)
- 데이터 삽입 가능 : Injection 공격
- forwarding 종류
- kernel forwarding : 운영체제를 통한 forwarding
- 해커의 컴퓨터가 비정상 통신임을 알아채고 복구를 시도하고, 복구 요청을 보냄
- software forwarding : 프로그램을 통한 forwarding
- 취약점 (ARP spoofing 공격이 가능한 이유)
- ARP 가 인증서와 같은 인증 시스템 부재
- ARP cache table 이 최신 정보로 학습
- ARP 자체의 문제이기 때문에 현재 완전한 보안 솔루션 없음
- 한계점 : 같은 네트워크 (네트워크 내부) 에서 사용하는 공격이기 때문에 같은 네트워크에 존재하는 장비들만 공격 가능 (라우터에선 ARP 차단)
- ARP Redirect 공격
- 일반 PC 와 GW (Router) 와의 통신 (외부와의 통신) 을 공격하여 외부로 전송되는 데이터 전체를 Sniffing
- Sniffing 탐지
- ARP storm 확인
- Decoy
- Promiscuous Mode 시스템 탐지
- 변조된 ARP 정보 확인
- 중요한 시스템 (장비) 들의 IP 와 MAC 주소의 Maching 리스트를 작성하여 변조 여부 확인
- 관리 네트워크에서 변경되는 시스템의 정보를 모니터링
- Host 보안 : ARP cache 정적 (static) 운영
- GW 등 중요 시스템의 ARP cache 를 정적으로 설정하여 공격자의 ARP reply 에 의해 변조되지 않도록 함
- 정적 정보 : 사용자나 시스템이 설정하며, 정보가 유지됨
- linux : shell 파일로 작성하여 booting script 등록
- windows : batch 파일로 작성하여 시작 프로그램 등록
- 동적 정보 : 최신 정보로 업데이트됨
IP Spoofing
- Source IP 를 속여서 접속하는 공격
- Source IP 를 변조하여 패킷을 보내면 응답은 바꾼 해당 IP 로 전송되기때문에 응답을 받을 수 없음
- DOS 공격자의 정보를 은닉하기 위해서도 사용
- IP 기반 보안정책을 사용하는 방화벽 등 보안 솔루션의 접근제어를 우회하기위해 사용
- ex) 서버 - 스위치 - 방화벽 (라우터 역할도 함) - 스위치 - A : 관리자 (10.1), B : 일반인 (10.2)
- 방화벽 정책 : 출발지 주소 10.1 허용, 10.2 차단
- B (10.2) 가 서버에 접속하려면 출발지 IP 주소를 10.1 로 바꿔서 전송
- 서버는 10.1 로 응답하기 때문에 원래는 B (10.2) 는 데이터를 받을 수 없음
- 방화벽에게 ARP spoofing 하여 B 가 10.1 인 것 처럼 속임
- 이러는 동안 10.1 이 목적지인 데이터는 B 에게 가니까 A 는 통신 불가
- B 가 10.1 을 서브 인터페이스 IP 주소로 설정하여 목적지 주소가 10.1 인 패킷을 DROP 하지 않도록 함
실습
Spoofing
- kali (공격자) 가 linux, XP 인척
linux 192.168.50.50/24
XP 192.168.50.100/24
[kali, linux, XP]
[kali]
-
해야할 일
- linux 에게 xp 인척 arp 전송
- xp 에게 linux 인척 arp 전송
-
arpspoof -i 인터페이스이름 -t 공격타켓IP 사칭할IP
-
arpspoof 로 eth0 을 이용해서 192.168.50.50 으로 192.168.50.100 인척 공격
- arpspoof -i eth0 -t 192.168.50.50 192.168.50.100
-
arpspoof 로 eth0 을 이용해서 192.168.50.100 으로 192.168.50.50 인척 공격
- arpspoof -i eth0 -t 192.168.50.100 192.168.50.50
[linux]
- arp -a 로 XP 가 kali 의 MAC 주소로 변경된거 확인
[XP]
- ping 192.168.50.50 이 tumed out 뜨는거 보고 arp -a 확인 시 kali 가 변조한 arp 학습함
[wireshark]
- VMnet8 확인 시 ARP strom 확인 가능
- 192.168.50.50, 192.168.50.100 의 MAC 주소가 kali 의 것이라는 arp 신호
- linux, XP 사이에 ping 시 도착지의 MAC 주소가 kali 의 것으로 확인 가능
[kali]
ettercap (MITM 공격)
- 공격대상의 모든 arp table 의 MAC 주소를 kali 의 MAC 주소로 변경, 자동으로 포워딩 설정까지 해줌
- ARP spoofing, 패킷 sniffing 등 가능
[kali]
-
ettercap 설치
- apt -y install ethercap-graphical
-
ettercap 실행 (터미널)
- ettercap -T -M arp:remote /공격대상IP1/공격대상IP2/.../
- T : text 모드, M : MITM 공격, arp:remote : arp spoofing
- ettercap -T -M arp:remote /192.168.50.50/192.168.50.100/
-
ettercap 실행 (터미널)
- ettercap -G
- 우상단 ... 옵션 - promisc mode 체크된거 확인
- 우상단 V 표시 (accept) 클릭
- 좌상단에 정지
- 좌상단 돋보기 : host 탐색
- 좌상단 서버 : 공격 대상 선택 후 Add to Target
- 우상단 지구본 : 공격 방식 지정 - ARP poisoning - Sniff remote connections 만 체크 - OK - 좌상단 재생 버튼 : 공격 시작
- 윈도우와 리눅스에 arp -a 시 서로의 MAC 주소가 kali 의 것으로 되어있음
Host 보안을 위해 ARP cache 정적 설정
[linux]
[XP]
[kali]
- ettercap -T -M arp:remote /192.168.50.50/192.168.50.100/
- 공격해도 linux 와 xp 의 정적 설정한 ARP cache 의 MAC 주소는 변하지 않음
IP Spoofing
linux1 192.168.50.50/24
- SSH server, 방화벽
linux2 192.168.50.150/24
- SSH client
kali 192.168.50.200/24
- 공격자
[kali]
-
가상 IP 설정
- ifconfig eth0:1 정상클라이언트IP netmask 서브넷마스크
- ifconfig eth0:1 192.168.50.150 netmask 255.255.255.0
-
ARP Spoofing
- arpspoof -t 서버IP 정상클라이언트IP
- arpspoof -t 192.168.50.50 192.168.50.150
-
SSH 접속 시 주소 Binding
- ssh -b 정상클라이언트IP 서버IP
- ssh -b 192.168.50.150 192.168.50.50
- ssh 에서 who 입력 시 192.168.50.150 으로 접속한 것으로 확인 가능
IP Spoofing (서버와 방화벽 (라우터) 이 따로 존재)
- linux1 (firewall)
- ens160 192.168.100.254(vmnet3)
- ens224 192.168.200.254(vmnet4)
- linux2 (SSH)
- ens160 192.168.100.1(vmnet3)
- linux3 (admin)
- ens160 192.168.200.1(vmnet4)
- kali (hacker)
- eth0 192.168.200.100(vmnet4)
구조 : SSH - firewall (router) - admin, hacker
- iptables 기본 정책 ALL DROP
- admin 에서 ssh 접속 가능하도록 허용정책 설정
- kali 에서 ettercap 을 이용하여 admin 과 ssh 서버 사이의 통신 MITM 공격
- ettercap -T -M arp:remote /192.168.200.254/192.168.200.1/
- kali 는 논리적으로 firewall 과 admin 사이에 위치하게 됨
- admin 과 ssh 서버 사이의 통신을 kali 의 wireshark 로 확인
- kali 에서 ssh 접속 가능한지 여부 확인
- 불가. 서버가 다른 네트워크 대역에 있기 때문에 ip spoofing 을 해야함
- kali 에서 ip spoofing 을 이용한 공격으로 SSH 서버 접속
- ifconfig eth0:1 192.168.200.1 netmask 255.255.255.0
- arpspoof -t 192.168.200.254 192.168.200.1 혹은 ettercap -T -M arp:remote /192.168.200.254/192.168.200.1/
- ssh -b 192.168.200.1 192.168.100.1
- kali 가 가상 인터페이스를 추가하여 ip 를 변조
- kali 가 arp spoofing 으로 가상 인터페이스 ip 주소의 mac 주소를 자신의 mac 주소로 firewall (router) 에게 알려준 후 서버에게 통신 시작