Spoofing | 스푸핑
사전적 의미 : 속이다
ARP 스푸핑
- ARP (Address Resolution Protocol) : IP 주소로 MAC 주소를 찾는 프로토콜
2계층 통신을 위한 프로토콜 > 서로 MAC 주소의 정보를 알아야 통신이 가능함
∴ 동일 네트워크 내부망에서만 사용 가능 - ARP 프로토콜을 이용하여 MAC 주소를 속이는 공격 기법
- ARP 프로토콜이 가지는 취약성을 이용
- 스위칭 환경에서 스니핑을 하기 위해 사용됨 (결과적으로 스니핑이 목적)
- MAC 주소를 속여 랜에서의 통신 흐름을 왜곡
- IP 주소는 의미가 없음
즉, 공격하고자 하는 시스템에 서로의 IP 주소에 공격자의 MAC 주소를 넣어 공격자를 통해 소통이 되도록 한다.
ARP Protocol
IP 주소에 대해서 그 주소에 해당하는 MAC 주소가 무엇인지를 찾는 프로토콜
ARP Request : broadcasting
나와 동일 내부망에 있는 호스트들에게 전부 물어봐야하기 때문에, 브로드캐스팅을 한다.
- Opcode = 1 (request를 나타내는 OPcode)
- Source IP : Source MAC : Target IP : Target MAC
ex) 203.252.147.1이 203.252.147.100의 MAC 주소가 궁금하다면
203.252.147.1 AA:AA 203.252.147.100 00:00
아직 Target MAC 주소를 모르기 때문에 (이것을 알아내는게 ARP) Target MAC 주소는 비워둔다
* 00:00으로 MAC 주소를 지정하면 모든 랜카드가 다 받는다.
ARP Response (reply) : Non-broadcasting
해당 IP에 해당하는 곳에서만 응답을 보내주기 때문에 브로드캐스팅하지 않아도 된다.
- Opcode = 2 (response를 나타내는 OPcode)
- Source IP : Source MAC : Target IP : Target MAC
ex) 203.252.147.100이 203.252.147.1에게 응답
203.252.147.100 BB:BB 203.252.147.1 AA:AA로 응답함
즉, 자신의 MAC 주소가 BB:BB라는 것을 보냄
해당 IP에 해당하는 MAC 주소가 무엇인지 확인한 후, 새롭게 얻어진 정보로 ARP Table을 생성함
ARP 스푸핑 예시
- 서버와 클라이언트는 최초에 통신하기 위해 서로의 MAC 주소를 알아야함.
- 해당 MAC 주소로 ARP Table을 구성
- 공격자 : 서로의 IP에 대한 MAC 주소를 CC라고 알림 > ARP Table 정보를 갱신
공격자 : ARP Response 패킷을 사용하여 10.0.0.2과 10.0.0.3의 MAC 주소가 CC라고 알리며 ARP Table을 갱신시킴
공격자가 전송하는 ARP Response
- ARP 패킷의 opcode : 2
- 클라이언트 (10.0.0.3)
서버 IP : 공격자 MAC : 클라이언트 IP : 클라이언트 MAC
ex) 10.0.0.2 CC 10.0.0.3 BB - 서버 (10.0.0.2)
클라이언트 IP : 공격자 MAC : 서버 IP : 서버 MAC
ex) 10.0.0.3 CC 10.0.0.2 AA
Q) 아직 ARP requset를 보내지 않았는데 이게 가능한가?
A) ARP 프로토콜의 단점 : 요청(ARP Request)를 보내지 않아도 응답(ARP reply)가 오면 ARP Table을 갱신한다.
공격 전후 ARP 테이블
공격 전
Internet Address Physical Address Type
10.0.0.2 AA Dynamic
공격 후
Internet Address Physical Address Type
10.0.0.2 CC Dynamic
* Type : Dynamic > ARP 프로토콜로 인해 MAC 주소가 얻어지고 갱신된다는 것을 의미함
보안 대책
- ARP 테이블이 변경되지 않도록 MAC 주소 값을 고정
arp -s [IP주소][MAC주소] 명령어로 Type을 Static으로 변환
> 시스템이 재부팅 될 때마다 수행해주어야함
> 랜카드 교체 시 MAC 테이블 수정 - 보안 툴 사용 : 클라이언트의 ARP 테이블의 내용이 바뀌면 경고 메세지 전송 ex) ARP Watch
- ARP 스푸핑은 TCP /IP 프로토콜 자체의 문제로 근본적인 대책은 없음
IP 스푸핑
- Source의 IP 주소를 다른 주소로 속이는 것
ex) DoS 시 공격자를 감추어 역추적을 어렵게 하는 것 / 방화벽 통과 - 시스템간의 트러스트 관계를 이용하여 주요 서버에 접속
트러스트
사용자는 서버에 원격 접속을 해야한다.
이 과정에서 "인증" 과정을 거치는데, 그 인증 과정 중 대표적인 것이 ID와 Password이다.
공격자가 원격 접속 과정에서 ID와 Password를 스니핑 하는 사례가 많이 발생했다 (그 당시 암호화해서 보낸다는 개념이 존재하지 않았음)
이를 해결하기 위해 트러스트가 생겼다.
- 시스템 접속시 자신의 IP 주소로 인증함
- 로그인 없이 접속이 가능
- 중간에 ID, Password가 스니핑되는 것을 막음
- 원격지 접속 서비스 중 rlogin, rsh, rcp 등이 트러스트를 사용했다
- 유닉스 시스템에서만 트러스트 설정 가능
트러스트 설정 방법
/ect/hosts.equiv : 현재 시스템 전체
$HOME/.rhost : 해당 사용자의 HOME 폴더에서 사용자 한 사람에게만 귀속시킴
트러스트에 의해 접근 가능한 IP와 ID(사용자)를 등록
200.200.200.200 root
201.201.201.201 +
200.200.200.200에서 root 계정으로 로그인을 시도하면 패스워드 없이 로그인을 허락
201.201.201.201에서 어떤 계정으로 로그인을 시도해도 패스워드 없이 로그인을 허락
++ : IP와 ID에 상관 없이 모두 로그인을 허용한다.
트러스트 관계 설정 파일을 잘 관리해야한다.
IP 스푸핑
- 트러스트로 접속하고 있는 클라이언트에 DoS 공격
- 클라이언트가 사용하는 IP가 네트워크에 출현하지 못하도록 막음
- 공격자가 해당 IP로 설정을 변경 후 서버에 접속
- 공격자는 패스워드 없이 서버에 로그인
공격자가 트러스트 관계에 있는 공격대상의 IP인 척하고 서버에 접속한다.
Q) 공격자, 공격대상, 서버가 전부 다른 네트워크에 속해있으면 서버가 보내는 응답은 공격자가 아닌 공격 대상으로 보내진다. 이러면 공격자와 서버가 양방향 통신을 하지 못하지 않는가?
A) 양방향 통신이 불가능하다. 만약, 세가지가 모두 같은 네트워크에 속해있다면 ARP 스푸핑을 통해 양방향 통신이 가능하다. 즉, 외부 네트워크에 있다면 IP만 속인다고 양방향 통신이 되지 않는다.
보안 대책
- 트러스트 차단 : 페도라 12부터는 트러스트 설정이 매우 복잡하다
- rlogin 대신 ssh사용 (암호화된 원격 접속 사용)
- 트러스트된 시스템의 MAC 주소를 static으로 지정
DNS 스푸핑
DNS : Domain Name System - 도메인의 이름과 실제 IP를 찾아주는 것
- 웹 스푸핑이라고도 함
- 정상적인 웹 사이트 접속 차단
- 위조된 web 사이트의 IP 주소를 전송함 (즉, 다른 IP 주소를 전송해줌)
- 사용자가 정상적인 웹 사이트가 아닌 위조된 웹 사이트에 접속하도록 유도하는 방법
DNS
- 클라이언트가 DNS 서버에 접속하고자 하는 IP 주소를 전송 (DNS Query 전송)
- DNS 서버가 해당 도메인의 IP 주소 전송 (DNS Reply - UDP)
- 클라이언트가 받은 IP주소를 바탕으로 TCP/IP로 웹서버 요청 / 전송 (Web login)
DNS 통신은 UDP를 사용하는데 연결 지향성 프로토콜이 아니다.
DNS 공격
DNS 패킷은 UDP 패킷 > 세션이 존재하지 않음
따라서 먼저 도착한 정보를 신뢰하고, 다음에 도착한 정보는 버린다.
내가 요청을 보낸 정확한 DNS 시스템에서 응답이 온 것인지 확인하지 않음\
1. 클라이언트로부터 DNS Query 패킷 확인
클라이언트가 DNS에게 어떤 DNS쿼리를 보내고 있는지 확인해야함
즉, 공격자가 클라이언트가 보내는 DNS Query를 알도록 스니핑을 하고 있어야함
- hub : 모든 패킷이 공격자에게도 전달되므로 프러미스큐어스 모드로 DNS Query 패킷을 확인할 수 있다
- switch : 공격자가 클라이언트의 DNS Query 패킷을 받아야하므로 ARP 스푸핑과 같은 선행 작업이 필요하다
해당 과정을 통해 공격자도 클라이언트가 보내는 DNS Query 패킷을 알 수 있다.
2. 공격자가 클라이언트에게 위조된 DNS Response 패킷 전송
공격자는 로컬에 존재하므로 DNS 서버보다 지리적으로 가깝다.
따라서 더 빠르게 위조된 DNS 패킷이 전송될 수 있다.
UDP로 접속했기 때문에 먼저 온 Response를 신뢰한다.
3. 클라이언트는 공격자가 보낸 DNS Response 패킷을 올바른 패킷으로 인식하고 웹에 접속
UDP로 접속했기 때문에, 나중에 온 DNS Response를 버리고 공격자가 생성한 웹 서버에 접속한다.
보안 대책
- ARP 스푸핑을 막아야한다.
- host 파일에 주요 URL과 IP 정보를 등록
C:\Windows\system32\driver\etc\hosts
/etc/hosts
'Hacking > Network' 카테고리의 다른 글
네트워크 보안 시스템 (2) | 2024.10.13 |
---|---|
무선 랜 보안 (0) | 2024.10.13 |
Session Hijacking | 세션 하이재킹 (2) | 2024.10.13 |
Sniffing | 스니핑 (0) | 2024.10.12 |
DoS | 서비스 거부 공격 (3) | 2024.10.12 |