풋프린팅(Footprinting)
![]() |
- 풋프린트(Footprint)는 발자국을 뜻하며, 풋프린팅(Footprinting)은 그 발자국을 살펴보는 것이다.
- 발자국을 살펴보아야 그 경로는 어디로 향하고, 사람인지 동물인지 정보를 알 수 있다.
- 이렇게 해킹을 하기위해 모든 정보들을 체계적이고 조직적으로 모으기 위해 풋 프린팅은 반드시 필요하다.
- 특정 기술이나 구성에 관한 중요한 정보들을 작은 것일지라도 놓치지 않도록 하기 위한 것이다.
공격자들이 사용하는 기법과 확인 가능한 정보들
사용기법 | 확인 정보 |
인터넷 | 도메인 이름(Domain Name) 네트워크 블록(Network Blocks) 인터넷을 통해 접속 가능한 시스템의 특정 IP 주소 시스템의 구조 접속제어 매커니즘과 관련 접속 제어 리스트 침입 탐지 시스템(IDSec) 시스템 목록(사용자/그룹 이름, 시스템 배너, SNMP정보) |
인트라넷 | 사용 중인 네트워킹 프로토콜(IP, IPX 등) 내부 도메인 이름(Internal Domain Name) 네트워크 블록(Network Blocks) 인트라넷 통해 접속 가능한 시스템의 특정 IP 주소 확인된 각 시스템에서 동작중인 서비스(TCP, UDP) 시스템 구조 접속제어 매커니즘과 관련 접속 제어 리스트 침입 감지 시스템(IDSes) 시스템 목록(사용자/그룹이름, 시스템 배너) |
엑스트라넷 | 연결 출발지와 목적지 연결 형식 접속 제어 매커니즘 |
원격접속 | 아날로그/디지털 전화 번호들 원격 시스템 형식 인증 매커니즘 |
스캔(SCAN)
- 서비스를 제공하는 서버의 작동 여부와 그 서버가 제공하고 있는 서비스를 확인하기 위한 것이다.
- TCP 기반의 프로토콜의 경우 3Way-Handshaking 등으로 요청(Request)을 보내면 응답(Response)을 전달한다.
- 이것을 통해 요청을 하여 응답을 받아 동작여부를 확인하고 서비스 등을 확인하여 정보수집을 하는 것이다.
※ 주의 : 우리나라에서 스캐닝을 하는 것은 엄연히 불법이다. 실습 시에는 반드시 임시로 서버를 구축하고 서비스를 하여 테스트 해야한다.
ICMP의 유틸리티 Ping을 이용한 스캔
- 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 ICMP(Internet Control Messaging Protocol)프로토콜의 유틸리티이다.
- 기본적으로 TCP/IP 네트워크에서 사용된다.
운영체제별 Mom Echo ICMP 패킷의 작동 여부
운영체제 | ICMP Request Packet | ICMP Reply Packet TTL |
리눅스 커널 2.2 ~ 2.4 | 255 | 64 |
리눅스 커널 2.0 | 64 | 64 |
FreeBSD | 255 | 255 |
솔라리스 | 255 | 255 |
HP-UX | 255 | 255 |
Windows 95 | 32 | 32 |
Windows 98, NT, 2000 | 128 | 128 |
TCP와 UDP를 이용한 스캔
- TCP와 UDP를 이용한 스캔은 시스템 자체의 활성화 여부가 아닌 포트 스캔을 하는 것이다.
- TCP 프로토콜은 기본적으로 3way-handshaking을 이용한 스캔을 한다.
- UDP는 포트가 닫혀있는 경우 공격대상은 ICMP 패킷을 보내지만, 열려 있는 경우에는 ICMP 패킷을 보내지 않는다.
※ TCP 패킷에 대한 링크 참고 - TCP 특징 및 헤더
TCP Open 스캔
![]() |
- Open 스캔은 3way-handshaking 과정을 거치는 과정에서 상대방 시스템에 로그 기록이 남는다.
- 먼저 동작 예상 포트에 세션을 생성하기 위한 SYN 패킷을 보낸다.
- 포트가 열려있는 경우에는 서버에서 SYN + ACK 패킷이 돌아오고 공격자는 다시 ACK 패킷을 보낸다.
- 포트가 닫혀있는 경우에는 공격자가 SYN패킷을 보내면 RST + ACK 패킷이 돌아오고 공격자는 아무 패킷도 보내지 않는다.
스텔스(Stealth) 스캔
- 스텔스 스캔은 세션을 완전히 성릭하지 않고, 공격대상 시스템의 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템의 포트 활성화 여부를
알아내기 때문에 공격 대상 시스템이 로그 정보가 남지 않는다.
- 따라서 공격 대상의 시스템 관리자는 어떤 IP를 가진 공격자가 자신의 시스템을 스캔하였는지 확인할 수 없다.
TCP Half Open 스캔
![]() |
- 스텔스 스캔의 대표적인 형태로서 완전한 세션을 성립하지 않고 포트의 활성화 여부만을 확인하기 때문에 로그가 남지 않는다.
- 먼저 SYN 패킷을 보내고 포트가 열려 있을 경우 서버는 SYN + ACK 패킷을 보내고 공격자는 즉시 연결을 끊는 RST(Reset) 패킷을 보낸다.
![]() |
- 스텔스의 다른 방법으로 FIN, NULL, XMAS가 있다.
- FIN의 경우 FIN(Finksh)패킷을 보내는 것으로서, 포트가 열린 경우 응답이 없고, 포트가 닫힌 경우에만 RST패킷이 되돌아 온다.
- NULL은 플래그(flag)값을 설정하지 않고 보낸 패킷이며 FIN과 같은 결과가 나온다.
- XMAS는 ACK, FIN, RST, SYN, URG 플래그들의 조합(크리스마스 선물꾸러미)플래그를 모두 설정하여 보낸 패킷으로 FIN과 같은 결과이다.
UDP 스캔
![]() |
- TCP와는 달리 UDP는 3way-handshaking을 하지 않는다.
- 포트가 닫힌 경우에는 공격 대상이 ICMP Unreachable을 보내지만, 열린 경우에는 보내지 않는다.
- 그러나 응답이 없다고 해서 열려있는 포트라고 확신할 수는 없다. UDP는 라우터나 방화벽을 지나 손실 될 경우도 있기 떄문이다.
[실습] fping, nmap, sing을 이용하여 포트 스캔을 수행하시오.
다음과 같은 명령어로 각각의 패키지를 설치한다.
yum install fping.i686
yum install sing.i686
yum install nmap.i686
윈도우용 nmap은 http://nmap.org/download.html에서 다운로드 받는다.
yum 사용법
? yum은 redhat에서 사용하는 rpm 패키지를 자동으로 다운받아서 설치.
#yum list 패키지명 => 패키지가 있는지 찾기
#yum install 패키지명 => 해당 패키지 설치
#yum erase 패키지명 => 시스템에서 패키지 지우기
sing을 이용하여 스캔
- 상대 시스템의 활성화 여부를 확인하기 위해 ICMP 프로토콜을 이용하여 스캔을 할 수 있다.
ICMP Timestamp 스캔
#sing -c 1 -tstamp 192.168.10.190
fping을 이용하여 스캔
- 네트워크에 활성화된 IP 보기
#fping -g 192.168.10.0/24 > /fping.txt
nmap 포트 스캔을 이용하여 스캔
1. Open 스캔 / Connect() 스캔
#nmap -sT -P0 -p 1-1024 -T3 192.168.10.190
(참고: -p 옵션은 포트를 지정... -p 옵션이 없으면 모든 포트 스캔)
(참고2: -T 옵션 0:Paranoid / 1:Sneaky / 2:Polite / 3:Normal
4:Aggressive / 5: Insane)
2. Half Open 스캔 / SYN 스캔
#nmap -sS -P0 -p 1-1024 -T3 192.168.10.190
3. FIN 스캔
#nmap -sF -P0 -p 1-1024 -T3 192.168.10.190
4. NULL 스캔
#nmap -sN -P0 -p 1-1024 -T3 192.168.10.190
5. XMAS 스캔
#nmap -sX -P0 -p 1-1024 -T3 192.168.10.190
6. ACK 스캔
#nmap -sA -P0 -p 1-1024 -T3 192.168.10.190
7. Window 스캔 (Window 크기 분석)
#nmap -sW -P0 -p 1-1024 -T3 192.168.10.190
8. Decoy 스캔
#nmap -sS -P0 -p 1-1024 -D 192.168.11.11 -T3 192.168.10.190
9. UDP 스캔
#nmap -sU -P0 -p 1-1024 -T3 192.168.10.190
윈도우 용 nmap 포트 스캔을 이용하여 스캔
운영체제 탐지
- 운영체제 시스템을 확인하는 방법으로 배너그래빙(Banner Grabbing)을 이용한다.
- 배너(banner)는 시스템에 대한 간단한 역할이나 기관등을 서술한 안내문과 비슷한 것이다.
- 결론을 말하자면, 배너 그래빙을 통해 상대 시스템의 배너를 확인하여 그 시스템의 대한 정보를 얻어오는 것이다.
[실습] Netcraft와 텔넷 시도를 통해 배너그래빙을 하시오.
넷크래프트를 통해 배너그래빙하기
- www.NetCraft.com 사이트를 통해 어떤 사이트가 어떤 종류의 서버와 개발툴을 써서 사용중인지 알아낼 수 있다.
결과화면
FTP에 대해 배너 그래빙하기
- telnet [공격대상 IP] [공격대상 포트 번호]와 같이 입력한다.
- 현재 192.168.10.190은 FTP 서비스를 하고 있는 상태이다.
- 서버로스를 이용하여 FTP 포트를 사용하고 있음을 알 수있고 공격을 해야한다면 서버로스의 약점을 이용하여 해야할 것이다.
방화벽과 침입 탐지 시스템의 탐지
- traceroute(윈도우에서는 tracert)명령어를 사용하면 * * * 과 같이 나오는 경우가 있는데 방화벽을 사용하거나 라우터 필터링의 경우이다.
- 따라서 공격자는 그 특징을 이용하여 어디에 방화벽이 있고 라우터 필터링을 하고 있는지 가늠할 수 있다.
윈도우 상에서 tracert를 사용한 경우
VisualRoute를 이용한 경우
[출처] 풋프린팅(Footprinting)과 스캔(Scan)|작성자 Stein
'Security > Network Hacking' 카테고리의 다른 글
스니핑(Sniffing) - Part 1 (0) | 2012.07.13 |
---|---|
목록화(Enumeration) (0) | 2012.07.13 |
[무선해킹] 802.11 WPA 크랙 (0) | 2012.07.12 |
[무선해킹] wep 해킹 (0) | 2012.07.12 |
TCP Session Hijacking (0) | 2012.07.12 |