Network Security

스푸핑 공격 대응책

부산대보금자리 2021. 8. 18. 14:15

1. 스푸핑 공격

1) 개념

스푸핑은 '속이다'는 의미이다. 인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하다. 

예를 들면 어떤 회사에서 운영하던 로컬 네트워크가 마비되는 경우가 생겼다고 하자. 라우터도 이상이 없었으며, 네트워크 자체에도 아무 문제가 없었다. 컴퓨터를 한 대씩 체크한 결과 컴퓨터 한 대의 ip주소가 라우터의 ip주소와 똑같은 값으로 설정되어 있었던 것이다. 

이와 같이 원래 가야 할 ip주소에 대해 다른 곳으로 보내게끔 하는 속임수를 스푸핑 공격이라고 할 수 있다.

 

2) 대응책

스푸핑 공격을 잡아내야 한다고 생각해보자. 먼저 준비가 되어야 하는데 관리하는 시스템의 mac주소를 확인하여 테이블로 만들어둔다. 그러다가 브로드캐스트 ping을 로컬 네트워크로 뿌리거나, fping이나 hunt 같은 툴을 이용해도 된다. 

그렇게 되면 모든 시스템에 대한 mac주소 값이 시스템 캐시에 기록되고 이때 ip주소 값과 mac주소의 대칭 값을 확인한다. 

이때 ip주소는 라우터인데, 라우터 mac이 아닌 엉뚱한 mac주소로 맵핑되어 있는 항목을 확인할 수 있을 것이다.

그리고 해당 mac주소의 소유자를 미리 만드어둔 mac주소 테이블에서 찾고 잡으면 될 것이다.

 

- 브로드캐스트 ping 보내기 

fping을 이용해 주어진 ip주소 범위내에서 ping을 보낼 수 있다.

이와 같이 보낸후 arp -a로  mac주소가 update 된 것을 확인할 수 있다.

 

2. ARP 스푸핑

arp는 IP주소 값으로 mac주소 값을 알아내는 프로토콜이며, RARP는 mac주소로 ip주소 값을 알아내는 프로토콜이다.

arp스푸핑은 mac주소를 속이는 것이다. 2계층에서 작동하므로 공격 대상이 같은 랜에 있어야 한다.

A와 B의 정상적인 통신을 방해하고 속이기 위해 공격자가 등장한다.

공격자는 A와 B에게 상대방의 mac주소가 AA,BB가 아니라 CC라고 arp reply를 계속해서 보낸다. 

이를 받아 들인 A와 B는 상대방의 mac주소를 바꾸게 되고 스푸핑 공격이 된다. 

이때 공격자의 ip주소는 알릴 필요가 없다 왜냐하면 2 계층 공격이기 때문이다. 

 

- 한번 바꾸는 것으로 충분할까?

mac주소 테이블의 운용은 운영체제 종류별로, 버전별로 조금씩 다르다. 그러나 모든 운영체제에서는 MAC 주소의 유효성을 주기적으로 확인한다. 네트워크에서 해당 시스템이 확인되지 않으면 MAC 주소 테이블에서 IP와 mac주소 맵핑 내용을 삭제한다. 따라서 스푸핑 된 패킷을 주기적으로 계속 보내야 한다. 리눅스는 120초, 윈도는 조금 더 길지만, 보통 공격 시 가장 적당한 시간은 40초로 알려져 있다.

 

이에 대한 실습은 이전 스니핑 마지막에 실습했으니 확인할수 있다.

 

- 보안 대책

mac 주소 테이블을 확인하고 type을 static으로 바꾸는 것이 해결책이 된다. 

이렇게 설정하면 설정된 ip 주소 값과 mac 주소 값은 arp 스푸핑 공격이 들어와도 변하지 않는다.

static 옵션을 지정하는 것은 시스템 보안에 중요한 역할을 한다. 그러나 관리하는 모든 시스템에 이런 작업을 할 수는 없다.

또한 리부팅하면 static옵션이 사라지므로 이를 계속 사용하려면 배치 파일 형태로 만들어두고, 리부팅 시마다 자동으로 수행되도록 설정해야 한다. 또 다른 위험도 있다. 짐작하겠지만 시스템의 랜 카드의 하나만 바꿔 끼워도 모든 시스템의 mac주소 테이블을 고쳐야 하고 실수라도 하는 날엔 네트워크가 엉망으로 꼬일 수 있다. 그러므로 mac 주소 값을 static을 설정하면 반드시 기록해야 하며, 지도와 같은 형식으로 보관해야 한다. 

 

3. IP 스푸핑

IP 스푸핑은 IP주소를 속이는 것이다. 

이해를 돕기 위해 예를 들어보자.

두 남녀가 채팅으로 대화를 나누다 남자가 여자에게 호감을 느끼고 편지를 쓴다. 여자도 남자에게 호감을 느끼고, 가장 가까운 친구에게 고민을 털어놓는다. 여자와 그녀의 고민을 들어주던 친구는 가난했지만, 남자는 백마 탄 왕자였다.

어느 날 여자의 집에 놀러 온 그녀의 친구는 우편함에서 남자의 편지를 발견하고, 자신도 모르게 몰래 품속에 넣는다. 그리고 여자가 남자에게 연락하지 못하게 거짓 편지를 전한다. 그리고 자신은 여자에게서 들은 남자 애기를 잘 정리하여 약속 장소에 나가 그 애기들을 꺼내며 남자와 사귀는 데 성공한다. 시나리오는 이와 비슷하다. 이러한 IP스푸핑은 ddos나 smurf 공격 등에 쓰일 수 있다. 즉 전송할 ip주소나 전송받을 ip주소를 임의로 변경하여 보낸다는 것이다. 

 

1) 보안 대책

트러스트 관계를 이용한 UP 스푸핑에 가장 좋은 보안 대책은 트러스트를 사용하지 않는 것이다. 그러나 부득이하게 트러스트를 사용할 경우에는 트러스트된 시스템의 MAC 주소를 static으로 지정해야 한다. 해커가 연결을 끊을 수는 있지만, 잘못된 IP주소로 위장해 접근하더라도 MAC 주소까지 같을 수는 없기 때문에 세션을 빼앗기지는 않는다.

 

트러스트는 시스템을 용이하게 관리할 목적으로 개발된 것이다. 예를 들어, 한 시스템이 여러 시스템에 로그인하고자 할 경우 관리자가 이를 모두 외우기 힘들다. 게다가 보안상 아주 취약하지만 아직도 흔히 쓰이는 텔넷의 경우는 로그인 시 계정과 패스워드를 암호화하지 않은 평문으로 네트워크로 흘려보내어 스니핑 공격자에게 좋은 먹잇감이 된다.

이에 대한 한가지 대책이 트러스트인데, 시스템에 접속할 때 자신의 IP주소로 인증을 하면 로그인 없이 접속이 가능하게 만든 것이다. 하지만 이는 스푸핑에 취약하며 이에 대안으로 SSO가 개발되었다. 

 

4. DNS스푸핑 

DNS 스푸핑은 웹 스푸핑과 비슷한 의미로 이해되기도 한다. 인터넷 익스플로러 주소 창에 원하는 사이트 이름을 입력하고 키를 눌렀더니 엉뚱한 사이트로 연결되는 것을 상상해보면 될 것이다. 이 또한 DNS 스푸핑 같은 공격으로 생길 수 있다. 

https://gjwjdgnsrnlg.tistory.com/28

 

윈도우 hosts 파일 실습

세상 모든 것에는 그것을 가리키는 무언가가 있다. 그리고 그것을 가리키는 말이 오직 하나만 있는 것은 아니다. 사람을 예로 들면, 우선 이름이 있고, 회사에 다닌다면 사번이 있을 수 있으며,

gjwjdgnsrnlg.tistory.com

위의 게시물을 봐도 이러한 접속이 바뀔수 있음을 알 수 있다.

 

리눅스에서 dns스푸핑을 한다고 했을때의 메커니즘을 설명해보겠다.

실습은 구글에 쳐보니 칼리를 이용한 실습이 워낙 많다. 

이는 dsniff 패키지에 있는 것들로 가능하다.

 

기본적으로 arpspoof이 되어서 dns에 대한 request를 내가 수행하는 것이다.

그래서 피해자가 request를 보내면 내가 원하는 ip주소를 그에 대한 응답으로 전해주는 것이 공격의 원리이다.

 

1) 보안 대책

DNS스푸핑에 대한 보안 대책을 알기 위해서는 먼저 이름 해석이 어떤 순서를 따르는지 알아야 한다.

브라우저에 도메인 이름을 입력하면 무조건 DNS Query를 생성하는 것은 아니다. 사이트에 접속하면  MAC처럼 도메인 이름에 대한 IP주소가 캐시에 저장되었다가 다시 접속했을 때 DNS Query를 보내지 않고 캐시에서 읽어 들인다. 그런 다음 hosts 파일을 통해 도메인 이름에 대한 ip주소를 해석한다. 따라서 hosts 파일에 중요한 사이트의 IP주소를 확인하여 적어두면, 적어도 이 파일에 있는 사이트에 대해서는 DNS 스푸핑을 당하지 않는다.

'Network Security' 카테고리의 다른 글

TLS보안 프로토콜 기술  (0) 2021.12.01
터널링과 VPN  (0) 2021.08.23
스니핑 : promiscuous,tcpdump,fragrouter,dsniff과 대응책  (0) 2021.08.09
스캔 및 탐지  (0) 2021.08.08
IP주소 추적하기  (0) 2021.08.06