먼저 ARP에 대해서 알아보자
ARP
Address Resolution Protocol의 약자로서 IP주소를 MAC주소로 변환해주는 프로토콜. IP 주소와 이에 해당하는 물리적 네트워크 주소 정보는 각 IP 호스트의 ARP 캐시라 불리는 메모리에 테이블 형태로 저장된 후 패킷 전송 시 사용 된다.
cmd에서 arp -a 명령어를 통하여 IP 주소와 MAC 주소를 확인할 수 있다. (리눅스에선 arp)
* ARP Cache Table은 MAC 주소와 IP 주소를 보유하고 있는 테이블이다. (정보 저장 시간 일반적으로 2분, 2분 이내에 다시 통신을 한다면 10분으로 연장)
* RARP는 Reverse Address Resolution Protocol 로 ARP의 반대 역할을 한다. (MAC 주소 값으로 IP 주소 값을 알아내는 프로토콜)
ARP spoofing
근거리 통신망(LAN) 하에서 주소 결정 프로토콜(ARP) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 ARP 프로토콜을 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다.
LAN: 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶는 컴퓨터 네트워크
공격자가 클라이언트가 서버에게 보내는 패킷을 먼저 받은 뒤, 서버에게 패킷을 보낸다.
- 즉, A와 B가 통신을 할 때 자신의 MAC 주소를 B의 MAC주소라 속이고 B가 받을 패킷을 자신이 먼저 받고, B에게 그 패킷을 보내주는 방식이다.
- 특별한 이상 증상이 없기 때문에 공격당하는 것을 확인하기가 힘들다.
ARP 스푸핑의 과정
1. 공격자가 A에게 자신의 MAC주소를 B의 MAC 주소인것처럼 속인다.
2. 공격자가 B에게 자신의 MAC 주소를 A의 MAC 주소인것처럼 속인다.
3. A는 B의 MAC 주소가 CC(공격자)라 알고 있고, B도 A의 MAC 주소가 CC(공격자)라 알고 있다.
- 4. 공격자는 A에게 받은 메시지를 B에게 보내고, B에게 받은 메시지를 A에게 정상적으로 보내준다.
(이렇게 되면 정상적인 통신이 되며, 공격자는 메시지를 모두 읽을 수 있다.)
ARP 스푸핑 공격 과정
1. 희생자 PC에서 ARP 테이블을 확인 (명령어: arp-a)
① 희생자 pc의 IP를 확인
② 게이트웨이의 IP를 확인
2. Mac 주소를 위조
(1) 명령어(arpspoof)를 이용한 위조
(2) ettercap을 이용하여 위조
(1) 명령어(arpspoof)를 이용한 위조
① 명령어 arpspoof를 이용하여 위조(공격자 PC)
-> arpspoof사용법
# arpspoof -i [인터페이스명] -t[희생자ip주소][희생자의 gateway주소]
=> 192.168.80.133(희생자주소)에 192.168.80.2(gateway주소)의 MAC주소를 공격자의 MAC주소라고 위조
② 결과값 확인 (희생자 PC)
-> 명령어 : arp -a (arp테이블 확인)
= 192.168.80.132(공격자 주소)의 MAC 주소가 192.168.80.2(게이트웨이 주소)의 MAC 주소로 위조된 것을 확인
③ 패킷 포워딩 (공격자 pc)
: 공격자 pc로 정보가 가므로 희생자 pc는 외부 접속이 불가능
따라서 희생자가 이상한 점을 감지하지 못하도록 희생자에게서 온 패킷을 외부로 전송하여 포워딩
-> 명령어 : # fragrouter -B1
(2) ettercap을 이용한 위조
① ettercap에 접속 (공격자 PC)
1) 직접 찾아 접속
-> 검색창에 sniffing으로 검색
2) 명령어를 활용하여 접속
-> 명령어 : # ettercap -G
② 호스트 리스트 출력 (공격자 PC)
③ target지정 (공격자 PC)
④ ARP poisoning 실행 (공격자 PC)
-> 희생자가 보낸 패킷이 공격자를 거쳐 외부로 전송하도록 포워딩
가로챈 데이터 패킷 확인(공격자 PC)
패킷 확인하는 데는 두 가지 방법이 있습니다.
(1) 명령어(tcpdump) 이용하기
(2) Wireshark(와이어샤크) 이용하기
(1) 명령어(tcpdump) 이용
-> 명령어 tcpdum [옵션][주소]
① 피해자ip의 패킷을 출력
-> 명령어 : ~# tcpdump host 피해자 ip 주소
② 출발 주소가 피해자 ip 주소인 패킷을 출력
-> 명령어 : ~# tcpdump src 피해자 ip 주소
③ 출발 주소가 피해자 ip 주소이고 포트번호가 80번인 패킷을 출력
-> 명령어 : # tcpdump src 192.168.80.133
(2) Wireshark(와이어샤크) 이용하기
① 명령어를 이용하여 프로그램을 열어줍니다.
(칼리 리눅스에는 기본적으로 깔려있습니다.)
-> 명령어 : ~# wireshark
② 검색창에 희생자 ip를 입력하여 희생자 패킷만 출력되게 합니다.
-> 명령어 : ip.addr == [ip주소]
③ 해당 패킷에 대한 전체 내용을 보기 위해 해당 패킷에서 Follow TCP Stream을 클릭하여 결과값 확인
-> 경로 : 해당 패킷에 오른쪽 마우스를 눌러 TCP->Follow TCP Stream을 클릭
출처: https://security-nanglam.tistory.com/191
https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?seq=16777
https://power-girl0-0.tistory.com/7
'CS' 카테고리의 다른 글
리눅스 proc (0) | 2021.07.28 |
---|---|
NESTAT 명령어 설명(리눅스 기준) (0) | 2021.07.28 |
NAT 개념 공부 (0) | 2021.07.27 |
보안기술 4주차 (0) | 2021.07.20 |
[보안기술 3주차] (0) | 2021.07.05 |