사이버 공격을 위한 정보 수집은 풋 프린팅, 스캐닝, 목록화의 3단계 과정을 거친다.
풋 프린팅은 신문, 게시판 혹은 네트워크 검색, 포털 검색 등의 방법을 이용해 공격 대상의 IP 블록, DNS/Mail 서버 등의 정보를 수집하는 초기 과정을 말한다.
스캐닝은 핑, 포트 스캔, 운영체제 확인 등의 방법으로 시스템 종류, IP 주소, 서비스 등을 알아내어 보다 세부적인 정보를 수집하는 과정을 말한다.
마지막으로 목록화는 앞선 풋 프린팅, 스캐닝 방법을 통해서 수집된 정보를 토대로 라우팅 테이블, SNMP 정보 등 좀 더 실용적인 정보를 수집하여 시스템 취약점 분석 및 공격방법 결정을 위한 지표를 작성하는 과정을 말한다.
풋 프린팅
풋 프린팅(Foot-printing)은 공격자가 공격 전에 공격대상에 대한 다양한 정보를 수집하기 위해 널리 사용되는 방법 중 하나이다.
일반적으로 사회공학 기법이 이용되는데, 비밀번호 등을 수첩이나 메모지에 적어 두면 이를 가로채어 정보를 수집하는 방법이다.
공격자는 공격대상이 스스로 공개한 여러 가지 정보를 풋 프린팅하여 공격대상의 IP 블록, 사용자 이름 및 계정, 전화번호 등과 같은 정보들을 수집한다.
스캔 공격 분류
- 스캐닝 기본 개념
스캐닝은 네트워크나 시스템의 주변조사를 수행하는 풋 프린팅과 달리 실제 공격방법을 결정하거나 공격에 이용될 수 있는 네트워크 구조, 시스템이 제공하는 서비스 등의 정보를 얻기 위해서 수행되는 방법이다.
공격자는 스캐닝 작업을 통해 공격대상 네트워크의 보안장비 사용 현황, 우회 가능 네트워크 구조, 해당 네트워크 내의 시스템 플랫폼 형태, 시스템 운영체제의 커널 버전의 종류, 제공 서비스의 종류 등에 대한 정보를 알 수 있다.
- 포트 스캔 분류
스캔 기법은 Sweep, Open Scan, Stealth Scan, Security Scan으로 분류할 수 있다.
Sweep은 네트워크 구조를 조사하기 위해 존재하는 시스템에 대한 작동 유무를 검사하고 Open Scan은 시스템에서 제공하는 서비스를 확인하기 위해 사용되며 Stealth Scan은 Open Scan에서 공격자의 노출이 되는 단점을 보완하고 보안장비에 대한 우회기능이 추가된 기법이다.
포트 스캔 공격 종류
- Sweep
Sweep은 특정 네트워크에 대하여 해당 네트워크에 속해있는 시스템의 작동 유무를 판단할 수 있는 기법으로, 이를 통해 목표 대상 기관에서 사용하거나 소유하고 있는 IP 주소와 네트워크 범위를 알아낼 수 있다.
Sweep은 요청에 의한 응답을 수행하는 클라이언트/서버 구조를 기반으로 하고 있으며, 동작은 요청에 대한 응답 여부를 판단하는 방법을 사용한다.
Sweep의 종류에는 사용하는 프로토콜에 따라 ICMP Sweep과 TCP Sweep, UDP Sweep의 세 가지 기법이 있다.
- Open Scan
Open 스캔은 시스템 자체의 활성화 여부뿐만 아니라, 스캔하는 포트에 해당하는 서비스의 활성화 여부를 조사할 수 있는 방법이다.
즉, 포트를 스캔하여 해당 포트가 열려있다면 해당 시스템이 활성화되어 있는 것으로 판단할 수 있을 뿐만 아니라 해당 포트가 제공하는 서비스를 예측할 수 있다.
Open 스캔 방법은 사용하는 전송 프로토콜에 따라 TCP Open 스캔과 UDP Open 스캔 기법으로 나뉜다. 둘 다 스캔하려고 하는 목적 포트로 연결을 시도한 후 그 응답 형태를 보고 포트의 활성화 여부를 판단한다.
→ TCP Scan
TCP Open 스캔 기법에는 연결을 완료하느냐, 완료하지 않느냐에 따라 TCP Full Open 스캔과 TCP Half Open 스캔이 있다.
· TCP Full Open Scan(TCP Connect Scan)
TCP Full Open 스캔은 포트가 열려 있는 경우 대상시스템으로부터 SYN/ACK 패킷을 수신하면 그에 대한 ACK 패킷을 전송함으로써 연결을 완료하는 방식이다.
포트가 닫혀 있을 경우에는 대상 시스템이 연결 요청을 받아들이지 못하므로 RST/ACK 패킷을 전송한다.
TCP Full Open 기법은 스캔하고자 하는 포트에 접속을 시도해 완전한 TCP 연결을 맺어 신뢰성 있는 결과를 얻을 수 있으나, 속도가 느리고 로그를 남기므로 탐지가 가능하다는 단점이 있다.
· TCP Half Open Scan(TCP SYN Scan)
TCP Half Open Scan은 세션에 대한 로그가 남는 TCP Full Open 스캔의 단점을 보완하기 위해 나온 기법으로 로그를 남기지 않아 추적이 불가능하도록 하는 기법이다.
TCP Half Open 스캔은 TCP Full Open 스캔과 달리 세션을 완전히 연결하지 않고, TCP Half Connection 만으로 포트의 활성화 여부를 판단한다.
즉, 먼저 공격자가 SYN 패킷을 공격대상 서버에 보낸 후 포트가 열려있는 서버로부터 SYN/ACK 패킷을 받으면 공격자는 즉시 RST 패킷을 보내 연결을 끊음으로써 연결 시도 세션에 대한 로그를 남기지 않도록 한다. 그러나 공격자의 SYN 세그먼트 전송기록은 남게 되므로 스캐닝 공격사실을 완전히 숨길 수는 없다.
→ UDP Scan
UDP는 비연결 지향 전송 프로토콜로 송신자와 수신자 사이에 연결 없이 데이터 송수신을 수행하기 때문에 ICMP Port Unreachable 에러 메시지를 통해 포트의 활성화 유무를 확인할 수 있다.
즉, 스캔하고자 하는 포트를 대상으로 UDP 연결을 시도할 때 ICMP Port Unreachable 에러 메시지가 수신되면 해당 포트의 비활성화를 의미하며, 아무런 응답이 없다면 해당 포트의 활성화를 의미한다.
다만 UDP를 이용한 포트 스캔은 신뢰하기 어렵다. UDP 패킷이 네트워크를 통해 전달되는 동안 라우터나 방화벽에 의해 손실될 수 있기 때문이다.
→ Stealth Scan
스텔스 스캔은 TCP Full Open 스캔이나 TCP Half Open 스캔처럼 handshaking 연결 기법을 이용하는 것이 아니라 TCP 헤더를 조작하여 특수한 패킷을 만든 후 스캔 대상 시스템에 보내 그 응답으로 포트 활성화 여부를 알아내는 기법이다.
종류에는 TCP FIN 스캔, TCP ACK 스캔, TCP fragment 스캔 등이 있다.
· FIN, NULL, XMAS Scan
TCP FIN 스캔은 TCP 헤더 내의 FIN Flag를 설정하여 공격대상 시스템으로 메시지를 전송하면 스캔 대상 시스템의 포트가 열려 있을 경우에는 응답이 없고, 포트가 닫혀있는 경우에만 RST(reset) 패킷이 되돌아오게 된다.
NULL과 XMAS 패킷을 전송하는 경우에도 이와 같은 결과를 얻을 수 있다. NULL 패킷은 TCP 헤더 내에 플래그를 설정하지 않고 전송하는 패킷을 말하며, XMAS 패킷은 TCP 헤더 내에 ACK, FIN, RST, SYN, URG 플래그를 모두 설정하여 전송하는 패킷이다.
· TCP ACK Scan
포트의 오픈 여부를 확인하는 것이 아니라 방화벽의 룰셋(필터링 정책)을 테스트하기 위한 스캔이다.
대상 방화벽이 상태 기반(네트워크 연결 상태를 추적할 수 있는)인지 여부와 대상 포트가 방화벽에 의해 필터링 되고 있는지 여부를 알 수 있다.
· Decoy Scan
스캔을 당하는 대상 호스트에서 스캐너 주소를 식별하기 어렵도록 실제 스캐너 주소 외에 다양한 위조된 주소로 스캔하는 방식을 말한다.
다양한 IP로 스캐너 주소를 위조하여 관리자가 스캔을 누가 하는지 알아채기 어렵도록 한다.
대표적인 스캔 도구
- NMap(Network Mapper)
NMap은 모든 운영체제에서 사용할 수 있으며, 운영체제의 종류 및 사용 서비스에 대한 정보, FTP 서버의 취약점을 이용한 bounce 공격을 수행할 수 있는 스캔 도구이다.
또한 프로그램 소스를 공개하여 많은 사용자들이 직접적으로 소스를 업그레이드하여 기능을 추가할 수 있는 확장성을 가지고 있다.
문법 | nmap [scan type] [options] <target> | |
Scan Type |
-sS -sT -sU -sF -sX -sN -sA -sP -sD -b |
TCP SYN(Half-Open) Scan TCP Connect(Open) Scan UDP Scan TCP FIN Scan TCP Xmas Scan TCP NULL Scan TCP ACK Scan Ping(icmp/icmp echo) Scan Decoy Scan TCP FTP bounce Scan |
Port Option |
-p 22: 22번 포트 스캔 -p <service> : 특정 서비스명(ssh 등)으로 스캔 -p 20,25,80 : 여러 포트 스캔 -p 1-1023 : 일정 범위 포트 스캔 -pT:21,23,110,U:53 : TCP 21,23,110번 포트와 UDP 53번 포트를 분리해서 스캔 |
|
Output Option |
-v : 상새 내역 출력 -d : Debugging -oN <file>: 결과를 일반 파일 형식으로 출력 -oX <file>: 결과를 XML 파일 형식으로 출력 -oG <file>: 결과를 Grepable 파일 형식으로 출력 -oA <Directory> : 일반, XML, Grepable 파일로 출력 |
|
기타 Option |
-O : 대상 호스트의 운영체제 정보 출력 -F : 빠른 네트워크 스캐닝 -T0 ~ T5 : T0 아주 느리게 ~ T5 아주 빠르게 |
- 예시
namp -p 1-30,110,62000- 203.247.xxx.xxx
203.247.xxx.xxx 호스트의 1-30번 포트와 110번 포트, 62000번 이상의 포트들을 스캔한다.
운영체제의 탐지(OS Fingerprinting)
공격대상 시스템이 사용하는 운영체제(OS)에 따라 취약점의 유형이 다르기 때문에 공격자가 사용할 수 있는 공격 수단에 차이가 있다. 따라서 사이버 공격자는 목표 시스템의 OS 종류와 버전을 파악하기 위해 다양한 형태의 스캐닝 작업을 수행한다.
OS는 버전마다 표준에서 명시적으로 정의되지 않는 기능의 구현 방법이 다르다.
- 탐지 방법
TCP 연결설정의 시작 순서번호(ISN, Initial Sequence Number) 설정 방식은 OS 버전마다 차이가 있다.
IP 패킷의 수명 시간을 나타내는 TTL의 기본값도 OS마다 차이가 있으며 IP 패킷의 서비스 유형을 표시하는 ToS 필드를 구현하는 방식도 차이가 있다.
배너를 확인하는 배너 그래빙을 이용하기도 한다.
목록화(Enumeration)
목록화는 풋 프린팅과 스캐닝 작업을 통해서 수집한 정보를 바탕으로 좀 더 실용적인 정보를 얻는 과정이다.
풋 프린팅과 스캐닝을 통해 수집된 정보만으로는 공격대상 시스템에 직접적인 피해를 입힐 수 없다. 즉, 풋 프린팅과 스캐닝은 공격 대상의 네트워크 구성이나 실행 중인 서비스 정도만 파악할 수 있다. 따라서 수집한 정보를 바탕으로 실제 공격에 사용할 수 있도록 목록화해야 한다.
포트 스캔 공격에 대한 대응책
포트 스캔 자체는 단순한 조사이며 이것만으로 실제 손해가 발생하지는 않는다. 하지만 시스템에 취약점이 있다면 포트 스캔으로 유출된 정보를 통해 공격을 받아 피해를 볼 우려가 있다.
- 대책
불필요한 패킷을 차단하도록 방화벽 설정
사용하지 않는 포트는 열어놓지 않음
침입탐지시스템을 사용해 포트 스캔 탐지
시스템 로그 감사
스니핑(Sniffing)
스니핑은 네트워크상에서 자신이 아닌 다른 상대방의 패킷 교환을 엿듣는 것을 의미한다.
TCP/IP 프로토콜을 이용한 통신에서는 통신매체를 통과하는 패킷이 암호화가 되지 않은 상태이므로 이 패킷을 도청하여 메시지 내용를 볼 수 있다.
- 허브 환경에서의 스니핑
허브는 기본적으로 들어온 패킷에 대해 패킷이 들어온 포트를 제외한 모든 포트에 패킷을 보내는 장비이다. 따라서, 허브를 사용하고 있다면 원하든 원치 않든 간에 계속하여 다른 사람의 패킷을 받아보고 있는 것이다.
물론 네트워크 드라이버, OS 커널 수준에서 MAC 주소를 보고 자신이 아닌 다른 이들의 패킷은 버려지기 때문에 그것을 쉽게 느낄 수는 없었을 것이다.
하지만 시스템의 NIC를 premiscuous 모드로 동작하게 한다면 다른 이들의 패킷 또한 버리지 않고 받아볼 수 있다. 이때 스니핑 도구를 통해 해당 패킷을 저장하고 분석하는 것이 가능하다.
- 스위치 환경에서 스니핑
· 스위치 재밍(Switch Jamming, MAC Address Flooding, MACOF 공격)
스위치의 MAC Address Table 버퍼를 오버플로우시켜서 스위치가 허브처럼 동작하게 강제적으로 만드는 기법을 말한다.
스위치는 Fail Open 정책, 즉 실패 시에 모두 허용해주는 정책을 따르는 장비이므로 문제가 발생하면 Hub처럼 연결된 모든 노드에게 패킷을 전송한다.
MAC Address Table을 채우기 위해 MAC 주소를 계속 변경하면서 ARP Reply 패킷을 지속적으로 전송하는 방식으로 공격한다.
· ARP Spoofing
공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply 패킷을 만들어 희생자에게 지속적으로 전송하면 희생자의 ARP Cache에 특정 호스트의 MAC 정보가 공격자의 MAC 정보로 변경이 된다. 이를 통해 희생자에게서 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 기법이다.
· ARP Redirect
공격자가 자신이 라우터인 것처럼 MAC 주소를 위조하여 ARP Reply 패킷을 해당 네트워크에 broadcast한다. 이를 통해 로컬 네트워크의 모든 호스트와 라우터 사이의 트래픽을 스니핑하고, IP Forward 기능을 통해 사용자들이 눈치채지 못하게 하는 기법이다.
· ICMP Redirect
ICMP 리다이렉트는 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격이다.
보통 네트워크는 라우터나 게이트웨이가 하나인데 하나의 라우터로 감당할 수 없을 때는 라우터나 게이트웨이를 두 개 이상 운영해서 로드밸런싱을 해야 한다. 로드밸런싱은 시스템의 라우팅 테이블에 라우팅 엔트리를 하나 더 넣거나 ICMP 리다이렉트 방법을 이용한다.
ARP Redirect vs ICMP Redirect
ARP Redirect는 희생자의 ARP Cache Table 정보를 변조하여 스니핑하는 것이고, ICMP Redirect는 희생자의 라우팅 테이블을 변조하여 스니핑 한다는 차이점이 있다.
· 스위치의 SPAN / Port Mirroring 기능 이용
스위치의 SPAN/Port Mirroring 기능은 스위치를 통과하는 모든 트래픽을 볼 수 있는 기능으로 특정 포트에 분석 장비를 접속하고 다른 포트의 트래픽을 분석 장비로 자동 복사해주는 기술이다.
관리적인 목적으로 사용하지만 공격자가 물리적으로 해당 포트에 접근할 수 있다면 손쉽게 패킷을 스니핑할 수 있다.
- 스니핑 공격의 보안대책
스니핑 공격에 대한 대응책은 크게 능동적인 대응책과 수동적인 대응책으로 나누어진다.
능동적인 대응책 : 스니퍼가 네트워크에 존재하는지를 알아보는 방법
수동적인 대응책 : 스니핑을 수행하더라도 해당 내용이 노출되지 않도록 통신 내용을 암호화하는 방법(근본적 대책)
· 스니핑 탐지
스니퍼에 대한 탐지는 기본적으로 스니퍼가 promiscuous 모드에서 작동한다는 데서 시작한다. promiscuous 모드란 유입 패킷에 대한 IP 주소와 MAC 주소 필터링을 하지 않는다는 의미이다.
ping을 이용한 방법 : 대부분의 스니퍼는 일반 TCP/IP에서 동작하기 때문에 Request를 받으면 Response를 전달한다. 이를 이용해 의심이 드는 호스트에 ping을 보낼 때, 네트워크에 존재하지 않는 MAC 주소를 위장하여 보내는 것이다. 만약 ICMP Echo Reply를 받으면 해당 호스트가 스니핑을 하고 있는 것이다. 왜냐하면 존재하지 않는 MAC 주소를 사용했으므로 스니핑을 하지 않는 호스트는 누구도 ping Request를 볼 수 없는 것이 정상이기 때문이다.
ARP를 이용한 방법 : ping과 유사한 방법으로 위조된 ARP Request를 보냈을 때 ARP Response가 오면 promiscuous 모드로 설정되어 있는 것이다.
DNS 방법 : 일반적으로 스니핑 프로그램은 사용자의 편의를 위해 스니핑한 시스템의 IP 주소로 Inverse-DNS lookup을 수행한다. 이는 원격과 로컬에서 모두 사용할 수 있는 방법으로, 원격에서 테스트 대상 네트워크로 Ping sweep을 보내고, 들어오는 Inverse-DNS lookup을 감시하여 스니퍼를 탐지할 수 있다.
Decoy 방법 : 스니핑 공격을 하는 공격자의 주요 목적은 계정과 패스워드의 획득에 있다. 보안 관리자는 이 점을 이용해 가짜 계정과 패스워드를 네트워크에 계속 뿌린다. 공격자는 이 계정과 패스워드를 이용해 접속을 시도하고, 이 접속을 시도하는 시스템을 탐지함으로써 스니퍼를 탐지할 수 있다.
ARP watch : 초기에 MAC 주소와 IP 주소의 매칭 값을 저장하고 ARP 트래픽을 모니터링하여 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 툴이다. 대부분의 공격 기법이 위조된 ARP를 사용하기 때문에 이를 쉽게 탐지할 수 있다.
· 암호화
SSL : 암호화된 웹 서핑을 가능하게 해주며 40비트와 128비트 두 가지 암호화키를 사용한다.
PGP, PEM, S/MIME : 이메일을 전송할 때 사용하는 암호화
SSH : 텔넷과 같은 서비스 암호화
VPN : 공용 회선을 이용한 사설 암호화 망
- 네트워크 스니퍼
패킷 또는 LAN 세그먼트상을 지나는 트래픽을 분석할 수 있는 프로그램 혹은 장비를 가리키는 용어이다.
스니퍼는 promiscuous 모드로 동작하는 네트워크 어댑터를 이용하여 네트워크에 접속해야 하며 이 어댑터의 드라이버는 데이터를 캡쳐한다.
스푸핑(Spoofing)
스푸핑이란 공격자가 자신을 공격 대상에게 노출시키지 않고 제3의 사용자인것처럼 MAC 주소, IP 주소 등을 속이는 작업이다.
- ARP Spoofing
ARP 스푸핑은 호스트의 주소 매칭 테이블에 위조된 MAC 주소가 설정되도록 하는 공격이다.
사용자 시스템이 ARP Reply 메시지를 수신할 때마다 자신의 ARP Request 메시지 송신 여부와 관계없이 그리고 ARP Reply 메시지의 송신자에 대한 인증 과정 없이 자신의 ARP 테이블을 갱신하는 ARP 프로토콜의 취약점을 이용한다.
공격자는 주기적으로 ARP 스푸핑 공격을 수행하여 ARP 캐시 테이블의 공격 정보를 계속 유지한다. 이와 같이 ARP 캐시 테이블의 내용을 몰래 변경하는 작업을 ARP 캐시 포이즈닝이라 한다.
· 보안대책
ARP 스푸핑은 회사의 DMZ를 관리하는 사람이 이용하면 성공률이 100%라 해도 될 만큼 치명적이다. 보안 사고의 50% 이상이 동일 랜에 연결된 내부자의 소행임을 생각한다면 중요 시스템이 ARP 스푸핑되는 것은 꼭 막아야 한다.
가장 기본적인 대응은 동일 네트워크 내의 시스템들에 대한 ARP 캐시 테이블을 ARP Reply 메시지와 관계없이 관리자가 직접 정적으로 작성함으로써 ARP 스푸핑 공격이 성립하지 않게 만드는 것이다.
- IP Spoofing
공격자가 자신의 IP 주소가 아닌 신뢰관계를 가진 시스템의 주소로 위장하여 공격 대상 서버로부터 정보를 가로채는 방식이다.
트러스트 관계 설정은 아이디, 패스워드 기반의 로그인이 아닌 신뢰관계에 있는 IP를 등록하여 해당 IP로 접근하는 것을 허용해주는 방식이다. 즉, IP 주소로 인증하고 로그인 없이 접속이 가능하도록 해주는 방식이다.
트러스트 설정은 다수의 시스템을 관리하는 관리자 입장에서 아이디와 패스워드를 관리해야하는 어려움을 해결하고 접속 과정에서 아이디, 패스워드가 스니핑되는 위험성을 차단하지만 IP 스푸핑에는 매우 취약하기 때문에 보안상 사용하지 않는 것을 권장한다.
· 공격 절차
A가 C와 B가 통신을 하고 있을 때 B에게는 서비스 거부 공격인 TCP Syn flooding 공격을 가하면서, C와는 자신을 B로 위장하여 통신을 하며 해킹하는 것이다.
· 대응 방안
외부에서 들어오는 패킷 중에서 출발지 IP 주소에 내부망 IP 주소를 가지고 있는 패킷을 라우터 등에서 패킷 필터링을 사용하여 막아낼 수 있다.
신뢰 관계를 이용한 IP 스푸핑에 가장 좋은 대책은 트러스트를 사용하지 않는 것이다. 부득이하게 트러스트를 사용할 경우에는 트러스트된 시스템의 MAC 주소를 static으로 지정해야 한다.
IP 스푸핑 공격은 기본적으로 IP 프로토콜이 출발지 IP 주소에 대한 인증 작업을 수행하지 않는 데서 기인한다. 따라서 IP 주소 인증 기능이 보완된 프로토콜(IPSec)을 사용하는 것이 근본적인 대응책이 된다.
TCP와 같은 상위 프로토콜에서 비정상적인 IP 주소 시스템 간 통신을 방지하는 기능을 추가하는 것도 IP 스푸핑 공격의 중요한 대응책이 된다.
- DNS Spoofing
DNS 스푸핑은 실제 DNS 서버보다 빨리 공격 대상에게 DNS Response 패킷을 보내 공격 대상이 잘못된 IP 주소로 웹 접속을 하도록 유도하는 공격이다.
DNS 스푸핑 공격이 ARP 스푸핑 공격보다 공격 응용 범위가 넓다. DNS 스푸핑 공격을 통해 공격 대상자를 어떤 사이트로 몰래 유인하여 파밍, 중간자 공격 등 2차 공격을 수행할 수 있다.
DNS 패킷은 UDP 패킷이므로 세션이 존재하지 않는다. 또한 먼저 도착한 패킷을 신뢰하며 다음에 도착한 정보는 버린다. DNS 스푸핑은 DNS 서비스의 이런 특징을 이용한다.
· 공격 절차
클라이언트가 DNS 서버로 DNS Query 패킷을 보내는 것을 확인한다. 스위칭 환경일 경우에는 클라이언트가 DNS Query 패킷을 보내면 이를 받아야 하므로 ARP 스푸핑과 같은 선행 작업이 필요하다.
공격자는 로컬에 존재하므로 DNS 서버보다 지리적으로 가깝다. 따라서 DNS 서버가 올바른 DNS Response 패킷을 보내주기 전에 클라이언트에 위조된 DNS Response 패킷을 보낼 수 있다.
클라이언트는 공격자가 보낸 DNS Response 패킷을 올바른 패킷으로 인식하고 웹에 접속한다. 이처럼 DNS 스푸핑 공격은 시간차 공격이라 할 수 있다.
하지만 꼭 공격 대상을 기다리고 있다가 공격을 수행해야 하는 것은 아니다. 네트워크의 특정 URL에 거짓 IP 정보를 계속 브로드캐스팅하면 해당 패킷을 받은 클라이언트는 잘못된 IP 주소로 찾아간다.
· 방어대책
도메인 이름을 브라우저에 입력했을 때 무조건 DNS Query를 생성한느 것은 아니다. 사이트에 접속하면 MAC처럼 캐시에 도메인 이름에 대한 IP 주소가 저장되었다가 다시 접속했을 때 DNS Query를 보내지 않고 캐시에서 읽어 들인다.
그런 다음 hosts 파일을 통해 도메인 이름에 대한 IP 주소를 해석한다. 따라서 hosts 파일에 중요한 사이트의 IP 주소를 확인해 적어두면, 적어도 이 파일에 있는 사이트에 대해서는 DNS 스푸핑 공격을 당하지 않는다.
세션 하이재킹
세션 하이재킹은 공격자가 인증 작업 등이 완료되어 정상적으로 통신이 이루어지고 있는 다른 사용자의 세션을 가로채서 별도의 인증 작업 없이 가로챈 세션으로 통신을 계속하는 행위이다.
세션 하이재킹은 인증 작업이 완료된 세션을 공격하므로 패스워드 스니핑과 재연 공격 등을 방지하기 위해 도입된 일회용 패스워드, 챌린지/응답 기법 등을 사용하는 사용자 인증을 무력화시키는 위험한 공격이다.
세션 하이재킹은 TCP 연결을 대상으로 수행되는 TCP 연결 하이재킹과 웹 세션을 대상으로 수행되는 웹 세션 하이재킹으로 구분될 수 있다.
- TCP 연결 하이재킹
TCP를 사용하는 응용은 클라이언트와 서버가 통신을 개시하기 전에 TCP 연결을 먼저 설정하고, TCP 연결을 통해 상호 메시지 교환을 개시한다. 교환되는 메시지에는 사용자 인증을 위한 메시지도 포함될 수 있다.
다른 사용자의 TCP 연결을 가로채는 TCP 연결 하이재킹은 순서번호 추론 기반의 하이재킹과 스니핑 기반의 하이재킹으로 구분된다.
TCP 세션 하이재킹이 스니핑과 다른 점은 명령의 실행이 가능하다는 것이다. 클라이언트와 똑같은 인터페이스가 제공된다. 따라서 TCP 세션 하이재킹을 적극적인 공격이라고 한다.
TCP 세션 하이재킹에는 HUNT와 juggernaut이라는 툴을 사용한다.
· 순서번호 추론 기반의 TCP 연결 하이재킹
초기 많은 TCP 구현들은 TCP 연결설정 과정에서 해당 연결을 통해 전송되는 데이터의 바이트 순서를 구분하는 순서번호의 시작번호(ISN)를 임의 번호로 설정하는 대신 일정한 규칙을 가지고 설정했다.
따라서 공격자는 몇 번의 연결 시도로 쉽게 설정 규칙을 알아내고, 이를 바탕으로 다음 연결을 위한 시작 순서번호를 추론할 수 있다.
일단 연결이 설정되면 공격자는 서버에게 사용자 A를 가장하여 데이터를 전송할 수 있지만 이 공격 기법은 많은 약점을 가진다. 공격자는 서버가 송신하는 데이터를 수신할 수 없으므로 일방향 데이터 전송만을 통한 공격 작업만 수행 가능하다.
정상적인 공격 대상자가 응용 차원에서 인증 작업에 참여할 수 있는 기회가 없기 때문에 서버가 인증 작업 없이 신뢰하는 호스트만이 공격의 대상이 될 수 있다.
가장 기본적인 대응책은 제3자가 순서번호 추론을 할 수 없게 만드는 것이다.
· 스니핑 기반의 TCP 연결 하이재킹
공격자가 공격대상자와 서버 간에 교환된 패킷을 스니핑할 수 있고 패킷 가공 공격을 수행할 수 있다면 TCP 연결 하이재킹은 보다 쉽게 수행될 수 있고 응용 수준의 완전한 양방향 통신 세션 하이재킹이 될 수 있다.
스니핑 기반의 TCP 연결 하이재킹을 이해하기 위해서는 TCP 연결의 동기화 상태와 비동기화 상태를 먼저 이해해야 한다.
TCP 연결의 동기화 상태는 클라이언트와 서버가 수신된 데이터의 순서번호와 상대방에게 수신을 확인한 확인번호의 차이를 수신 버퍼의 빈 공간 크기를 나타내는 수신 윈도우 크기(WIND)보다 작게 유지하는 것을 의미한다.
비동기화 상태에서 클라이언트와 서버가 데이터 패킷을 송신하게 되면 상호 ACK 패킷 송신을 계속 반복하는 ACK Storm 현상이 발생하게 된다.
방어 대책
스니핑 기반의 TCP 연결 하이재킹 공격은 스니핑 공격 방지 대책과 스푸핑 방지(MAC 주소 고정 등) 대책을 적용하면 상당 부분 방지될 수 있다.
TCP 세션 하이재킹은 공격의 특성상 몇 가지 특이점이 있어 적시에 확인할 수 있으면 공격을 탐지하고 이에 대한 대응이 가능하다.
ⓛ 비동기화 상태 탐지 : 서버와 시퀀스 넘버를 주기적으로 체크하여 비동기화 상태에 빠지면 이를 탐지해낸다.
② ACK Storm 탐지 : 전송 중 윈도우 크기와 시퀀스 넘버가 맞지 않는 상태가 되면 서로에 대한 교정 패킷이 정상적으로 작동하지 못하기 때문에 무한 루프에 걸리게 된다. 결국 ACK 패킷의 비율이 급격하게 늘어난다.
③ 패킷의 유실과 재전송 증가 탐지 : 공격자가 중간에 끼어서 동작하므로 패킷의 유실과 재전송이 발생하여 서버와의 응답 시간이 길어진다.
④ 기대하지 않은 접속의 리셋 : 접속 초기에 예상치 못한 세션의 리셋을 경험할 수 있다. 세션을 빼앗기거나, 세션을 빼앗기지 않더라도 공격이 실패할 경우 세션이 멈추거나 리셋된다.
세션 성립은 인증을 의미하고, 인증이 성립된 후에 해커는 세션 하이재킹을 하므로 인증을 위한 모든 검증을 우회할 수 있다. 따라서 세션 하이재킹에 대한 최우선의 대책은 데이터 전송의 암호화이다.
HTTP 세션 하이재킹
공격자가 특정 사용자의 유효기간이 남아있는 Session ID를 가로챌 수 있다면 별도의 인증 없이 해당 사용자의 권한으로 서버를 접근하는 세션 하이재킹 공격이 가능해진다.
대응 방안으로 데이터 트래픽 암호화와 스니핑 도구 탐지 및 제거, 세션 식별자를 추측하기 어렵고 긴 길이를 사용한다.
각종 Remote Attack
- Local Attack과 Remote Attack의 비교
Local Attack은 시스템에 접속한 후에 공격자가 원하는 공격을 수행하는 것이고 Remote Attack은 원격 컴퓨터에서 공격대상에 공격을 수행하는 것이다.
공격자 입장에서는 공격대상에 대해서 실제적으로는 어떠한 접근 권한도 가지고 있지 않으므로 Remote Attack을 수행하여야 하며 이 공격으로 공격대상에 접근권한을 얻은 경우에 Loacl Attack을 연속하여 수행할 수 있다.
- Trojan과 Exploit
Trojan은 악의적인 프로그램을 건전한 프로그램처럼 포장하기 때문에 일반 사용자들이 의심 없이 자신의 컴퓨터 안에서 이를 실행시킨다. Trojan은 실행 시 특정 포트를 열어 공격자의 침입을 도와 추가적으로 정보를 자동 유출하며 자신의 존재를 숨기는 기능 등을 수행하는 공격 프로그램이다.
Exploit은 OS에서 버그를 이용하여 루트 권한 획득 또는 특정 기능을 수행하기 위한 공격 코드 및 프로그램이다.
- Exploit 공격
컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자가 의도한 동작을 수행하도록 만들어진 절차나 일련의 명령, 스크립트, 프로그램 또는 특정한 데이터 조각을 말하며 이러한 것들을 사용한 공격 행위를 일컫키도 한다.
취약점 공격은 주로 공격 대상 컴퓨터의 제어 권한 획득이나 DoS 공격 등을 목적으로 한다.
'정보보안기사' 카테고리의 다른 글
침입차단시스템(Firewall) (0) | 2023.04.27 |
---|---|
IDS/IPS (0) | 2023.04.25 |
네트워크 기반 공격의 이해 - 1 (0) | 2023.04.21 |
네트워크 기반 프로그램 활용 (0) | 2023.04.20 |
네트워크 관리 (0) | 2023.04.17 |