해킹의 유형
1) 침입(Intrusion)
불법적으로 시스템 자원을 사용하거나 또 다른 해킹을 위한 경로로 사용하는 것이다.
2)서비스 거부 (Dos)
특정 호스트나 네트워크가 제 기능을 수행하지 못하도록 각종 서비스를 정지시키는 것이다.
3)정보 유출
경쟁 기업의 정보를 훔치거나 훔쳐낸 기밀을 외부에 유포하는것이다.
5)시스템 파괴
해커의 유형
1)Lamer
해커는 되고 싶지만 경험도 없고 컴퓨터 관련 지식도 많이 없는 해커이다.
2)Script Kiddie
네트워크와 운영체제에 대한 약간의 기술적인 지식을 갖고 있는 해커이다.
3)Developed Kiddie
대부분의 해킹 기법을 알고 있는 해커들로 보안상의 새로운 취약점을 발견하거나 최근
발견된 취약점을 주어진 상황에 맞게 바꿀만한 실력은 없다
4)Semi Elite
컴퓨터에 대한 포괄적인 지식이 있고 운영체제, 네트워크에 대한 지식도 잘 갖추고
있으며 운영체제에 존재하는 특정 취약점을 알고 이 취약점을 공격할수 있는 해킹
코드를 만들수 있다.
5)Elite
네트워크,운영체제, 프로그래밍 등 최고 수준의 지식을 갖고 있다. 새로운 취약점을
찾아 내고 해킹할 수 있는 최고 수준의 해커이다.
해킹 목적별 진행과정
1)침입 목적(단순 침입 목적의 과정)
->기본정보 수집 -> 스캐닝 -> 목록화 ->취약점공격 ->
사용자 계정탈취 or 권한상승 or 세션 탈취 -> 백도어 설치
2)서비스 거부 공격 목적(서비스 거부공격 목적의 공격 과정)
->기본정보 수집 -> 스캐닝 -> 목록화 -> 취약점 공격 -> 서비스 거부 공격 수행
3)정보 유출 목적 (정보 유출 목적의 공격 과정)
->침입 후 정보 유출
->기본정보 수집 -> 스캐닝 -> 목록화 -> Sniffing(도청)
4)정보 위조와 변조 목적
-> 침입 성공후 정보 위/변조
해킹의 변천사
1) 1980년대
- 1 사용자의 Password 추측공격
- 2 인터넷을 기반으로 한 최초의 웜 바이러스 등장
- 3 사용자 계정 데이터베이스를 획득하여 사용자 Password 크랙
- 4 백도어
2) 1990년대
- 1 스니핑(Sniffing)
- 2 세션 하이재킹(Session Hijecking)
- 3 스푸핑(Spoofing)
- 4 CGI 공격
- 5 버퍼 오버플로우 공격(Buffer Overflow Attack)
- 6 트로이 목마(Trojan Horse)
- 7 서비스 거부 공격(Denial Of Service)
3) 2000년대
- 1 분산 서비스 거부 공격 (Distribute Denial Of Service)
- 2 분산 반사 서비스 거부 공격(Distribute Reflected Of Service)
- 3 웹해킹
2 Domain 정보 수집
Whois 검색을 통한 Domain 정보 수집
-InterNIC 에 등록된 도메인에 대한 정보를 보관하고 있는 서버로 다음 정보 획득이 가능하다.
->등록, 관리 기관
->목표 사이트 네트워크 주소와 IP주소
->도메인 소유자(기업), 관리자, 등록자,관리자 이메일 계정
->레코드 생성 시기와 업데이트 시기
->주 DNS 서버와 보조 DNS 서버
->지역 별 Whois 서버
Dns 서버의 레코드 정보 수집
1) 단순 쿼리로 정보를 수집하는 경우
-> DNS 서버에서 영역 전송 기능에 대해 보안 설정을 한 경우 정보 수집한다.
-> 반복 쿼리를 통해 결과를 종합해야하는 불편함이 있으며 공개하지 않은 호스트나 하위 도메인은 알수 없다
Whois 검색을 통한 Domain 정보 수집
-InterNIC 에 등록된 도메인에 대한 정보를 보관하고 있는 서버로 다음 정보 획득이 가능하다.
->등록, 관리 기관
->목표 사이트 네트워크 주소와 IP주소
->도메인 소유자(기업), 관리자, 등록자,관리자 이메일 계정
->레코드 생성 시기와 업데이트 시기
->주 DNS 서버와 보조 DNS 서버
->지역 별 Whois 서버
Dns 서버의 레코드 정보 수집
1) 단순 쿼리로 정보를 수집하는 경우
-> DNS 서버에서 영역 전송 기능에 대해 보안 설정을 한 경우 정보 수집한다.
-> 반복 쿼리를 통해 결과를 종합해야하는 불편함이 있으며 공개하지 않은 호스트나 하위 도메인은 알수 없다
1-단순 쿼리로 정보를 수집
c:\>nslookup
>set type=all (모든정보)
>set type=mx
2-영역 전송을 활용하여 정보를 수집하는 경우
c:\>nslookup
>set type=A
>a.com
>ls -t a.com > a.com.zone
>exit
C:\Documents and Settings\a>type a.com.zone
> ls -t a.com
[UnKnown]
a.com. NS server = a.com
ftp A 192.168.1.22
mail A 192.168.1.22
www A 192.168.1.22
- Zone 정보 전송 제한 설정
vi /etc/named.conf
zone "a.com" IN {
type master;
file "a.com.zone";
allow-transfer { none; }; <--- 영역 전송 제한
};
-웹서버 접속자의 ip 주소 추적
웹서버의 관리자 계정이 없이도 일반 계정만 있으면 접속 가능한 일반 계정을 이용하여 웹 게시판의 로그 파일을 읽는 것이 가능 하다.
웹서버 로그확인
리눅스 /var/log/httpd/access_log 에 저장된다.
윈도우 c:\windows\system32\logfiles\ 에 저장 된다.
2-스캐닝(Scanning)
Active System Scan
공격 대상 네트워크에서 작동중인 시스템을 찾아 공격 대상 시스템을 결정하기 위한 검색방법
1) ICMP 프로토콜의 사용한 Active System 검색방법
-1 Ping 명령어를 이용한 방법 (Echo Request 와 Echo Reply)
Ping 은 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티로
개발되었으며 ICMP(Internet Control Messaging Protocol)를 사용하여 작동한다.
Timestamp Request와 Timestamp Relay 를 이용한 방법
Timestamp Request는 원격지 시스템의 현재 시간을 알아 보기 위한 패킷이며 Timestamp
패킷은 송신자가 패킷을 받은 시간(Originate Timestamp)과 수신자가 패킷을 받은 시간
(Receive Timestamp), 송신자가 수신자에게 전송하는 동안 걸린 시간(Transmit Timestamp)
으로 공격대상의 현재 시스템 시간을 알수 있다.
하지만,Timestamp Request 패킷에 Reply 패킷을 돌려내오는 시스템이 시간만을
알려준다고 생각할 수는 없으며 상대 시스템에서 Reply 패킷을 돌려보내오는 시스템이 시간만을
알려준다고 생각할 수는 없으며 상대 시스템에서 Reply 패킷이 돌아온다는 것은 상대
시스템이 활성화되어 있음을 의미하므로 스캔이 가능하다.
윈도우용 SolarWinds
SolaWinds Engineers Edition -> Ping & Diagnostic -> Ping Sweep -> 검색할 네트워크 설정
리눅스 Sing
sing.taz Download
tar xzf sing.tag
Information Requst 와 Information Reply 를 이용한 방법
Information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의
디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로 자신의 네트워크를
찾기 위해 개발되었다. 기본적인 목적은 RARP, Bootp, DHCP 와 같은 프로토콜과 같으나
다른 프로토콜을 이용한 방법에 비해 원시적이라고 할수 있으며 이 방법 역시 Timestamp
패킷과 마찬가지로 죽어 있는 시스템이 Reply 패킷을 보내오지 않는 것을 이용한 스캔
방법 이다.
ex) #./sing -info 192.168.1.20
ICMP Address Mask Request와 ICMP Address Mask Reply 를 이용한 방밥
ICMP Address Mask Request 와 Reply 패킷은 Information Request 패킷과 같이 터미널이
부팅될때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해서 보내는 프로토콜로
Reply 패킷을 돌려보내오는지 확인함으로써, 상대 스스템의 활성화 여부를 확인한다.
ex)#./sing -mask 192.168.1.20
Information Requst 와 Information Reply 를 이용한 방법
Information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의
디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로 자신의 네트워크를
찾기 위해 개발되었다. 기본적인 목적은 RARP, Bootp, DHCP 와 같은 프로토콜과 같으나
다른 프로토콜을 이용한 방법에 비해 원시적이라고 할수 있으며 이 방법 역시 Timestamp
패킷과 마찬가지로 죽어 있는 시스템이 Reply 패킷을 보내오지 않는 것을 이용한 스캔
방법 이다.
ex) #./sing -info 192.168.1.20
ICMP Address Mask Request와 ICMP Address Mask Reply 를 이용한 방밥
ICMP Address Mask Request 와 Reply 패킷은 Information Request 패킷과 같이 터미널이
부팅될때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해서 보내는 프로토콜로
Reply 패킷을 돌려보내오는지 확인함으로써, 상대 스스템의 활성화 여부를 확인한다.
ex)#./sing -mask 192.168.1.20
1) ICMP - Echo Request
- Echo Reply
ping.exe 사용
-> Solarwinds 의 ping sweep 활용
2) ICM - Timestamp Request
- Timestamp Reply
"sing - tstamp
#./sing -c 4 -tstamp 상대방 IP
-c Packet 몇개
운영체제별 ICMP 타입 지원
NMAP를 사용하여 시스템 활성화 여부 확인
#nmap -옵션
TCP & UDP Port
1)포트란 ?
포트는 목적지 호스트 까지 찾아온 패킷이 실제로 전달되어야 할 응용프로그램을 정확히 결정하기
위해서 사용하는 번호 이다.
2)포트와 데몬(서비스)의 관계
활성화된 데몬 또는 서비스에 의해서 열리게되며, 각각의 응용계층 프로토콜은 고유의
포트를 가진다. 시스템에는 65536개의 포트가 있으며, 0번 부터 1024번 포트가 Well Known 포트라고 불린다.
Well Known 포트는 일상적으로 잘 알려진 서비스를 위해 고유의 사용 용도가 정해져 있다.
보통 0번 포트는 쓰지 않으며, 1024번 포트부터 65534 포트는 임의의 사용 용도를 위해서, 또는 클라이언트가
서버에 접속 시에 할당 받는 포트의 범위이다.
3)TCP 포트와 UDP
TCP 포트와 UDP 포트는 별도로 취급되므로 동일한 번호를 가진 TCP 포트와 UDP 포트가 존재할 수있다.
4)Well Know 포트
잘 알려진 포트 (WellKnown Port): 0번 에서 1024번까지
등록된 포트 (Registered Port) : 1024번에서 49151번까지
동적인 혹은 사적인 포트(Dynamic or Private Port) : 49152번에서 65535번까지
각포트별 서비스 내용
Port Scan(Service Scan)의 유형
1)UDP Open Scan
포트가 열려있는 겨우, 아무런 응답이 없으며,포트가 닫혀 있을 경우에는 ICMP Unreachable 패킷을 받게 된다.
단점:: 과도한트래픽 유발
2)TCP Open Scan
포트가 열려있을 경우, 세션이 성립되며, 포트가 닫혀 있을 경우에는 RST+ACK 패킷을 받게 된다.
단점:: 로그 발생
3)TCP Half Open Scan
포트가 열려있을 경우, 서버로 부터SYN+ACK 패킷을 받은후, RST 패킷을 보내여 연결을 끊는 방법을 이용한다.
포트가 닫혀 있을 경우에는 Open Scan의 경우와 동일하다.
4)ACK Scan
공격대상 호스트에 ACK 플래그가 설정된 패킷을 여러번 전송하고 RST 응답 패킷을 확인하여
Windows 필드 값이 0이 아니면 열린포트로 가정한다.
5)Fragmented TCP Scan
프로그멘트 스캔방식은 패킷을 분화 전송하여 방화벽이나 IDS를 통과한 후 대상 컴퓨터에서 패킷이
조합되도록 하는 스캔방식이다.
6)Spoofed TCP Scan
공격자의 IP주소를 노출시키지 않고 상대를 스캔하기 위해 사용되는 방법이다. 조작된Source IP 주소를
사용하여 생성한 패킷을 사용하므로 공격당하는 상대는 공격자를 정확히 알기 힘들게 된다. 공격자는
자신에게 스캔 결과가 돌아오지 않기 때문에 공격 대상이 전송한 패킷을 스니핑하여 스캔결과를 확인해야한다.
7)시간차 스캔
공격의 차단을 피하거나, 탐지를 회피하기 위해 특정한 시간 간격으로 스캔 패킷을 보내는 기법이다.
단,공격 대상 Network의 모든 시스템을 Scan하는 시간이 많이 필요하다.
8)FIN, Xmas, Null Scan
포트가 열려 있을 경우에는 응답이 없고 포트가 닫혀 있는 경우에만 RST 패킷이 되돌아 온다.
Port Scan 수행
1)nmap 을 통해 Port Scan
nmap 다운로드 :http://nmap.org/dist/
nmap 옵션
telnet-server rpm 설치후
[root@localhost /etc/init.d]# chkconfig telnet on
[root@localhost /etc/init.d]# service xinetd restart
name를 사용한 각종 포트 스캔
1)UDP Open Scan
UDP Packet을 이용하여 상대방 시스템의 포트를 스캔한다. 응답이 없을 경우 해당 시스템 포트는
Active 상태로 확인한다. 하지만 UDP Packet 전송 중 유실될 경우 해당 시스템의 포트가 Active로
오인될수 있다.
2)TCP Open Scan
3 Way-Handshaking 을 통해 해당 스스템의 포트 상태를 확인한다. 3Way-Handshaking을 통하여
세션을 맺기 때문에 Log가 발생한다.
ex) root#nmap -v -sT 192.168.1.20
3)TCP Half Open Scan
ex)root#nmap -v -sS 192.168.1.20
4)Fin/Null /X-mas Scan
nmap -v -sF
nmap -v -sN
nmap -v -sX
Ack Scan
nmap -v -sA
nmap -v -sW
6)탐지되지 않기 위해 시간차 스캔 - IDS 회피
Paranoid : 5분이나 10분 간격으로 스캔을 한다.
Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위로 스캔한다.
Polite : 0.4초 단위로 스캔한다.
Normal : 정상
Aggressive : 호스트 타임아웃 :5분, 패킷 당 1.25초까지 응답을 기다린다.
Insane : 호스트 타임아웃 : 75초, 패킷 당 0.3초까지 응답을 기다린다.
nmap -sS -T 3 192.168.1.20
7)Fragmented TCP Scan - Firewall 통과
스캔할 포트 번호를 숨겨서 방화벽을 통과하기 위한 방법이다.
nmap -v -f -sT 192.168.1.20
8)Spoofed TCP Scan
nmap -v -ST 192.168.1.20 -D 220.149.93.201
9)UDP Open Scan
nmap -v -sU 192.168.1.20
네트워크 전체를 스캔할 경우
nmap -v -sT 192.168.1.20
운영체제 종류 확인
1)배너 그래빙 (Banner Grabbing)
Banner Grabbing 은 Telnet과 같이 원격지의 시스템에 로그인을 시도하면 나타나는
안내문과 같은 메시지를 확인하여 정보를 파악하는 방법으로 23번 포트에 Telnet
접속을 시도한 다음 화면에서는 운영체제의 버전과 커널 버젼을 확인할 수 있다
이러한 배너 그래빙은 23번 포트 이외에도 21,25,143번 포트에서도 가능하다.
2)Fin 스캔에 대한 반응
Fin 스캔은 모든 운영체제에 적용되는 것은 아니며 적용되는 운영체제는 윈도우,BSD
Ciscom, Iris 등으로 Fin 스캔의 가능 여부에 따라 운영체제를 판별할 수 있다
3)TCP 연결 시 최초 패킷의 원도우 크기 관찰
3Way-Handshaking을 통해 세션을 맺을 때 주고 받는 내용중 Window Size 를 통해
운영체제를 판별할수 있다. Windows2003 TCP Window Size 초기값은 64240, Solaris의
TCP Window Size 초기값은 64240, CentOS의 TCP Windows Size 초기값은 5840이다
4)세션 경결 시 TCP 패킷의 시퀀스 넘버 생성을 관찰
3Way-Handshaking을 통해 세션을 맺을때 교환하는 정보중 하나인 시퀀스 넘버를
통해 어떤 운영체제를 사용하는지 알수 있다. 윈도우일 경우 시간에 따른 시퀀스 넘버가
증가하고 리눅스의 시퀀스 넘버는 랜덤한 값으로, FreeBSD / Digital-Unix /IRIX/Solaris의
시퀀스 넘버는 시간에 따른 랜덤한 증가를 하게 된다.
5)각 운영체제마다 존재하는 서비스의 유무 확인
각 운영체제 마다 특별히 존재하는 서비스를 통해 해당 운영체제를 확인할수 있다.
ex) Windows -1512(TCP/UDP) : Wins
-666(TCP/UDP) : Doom Id Software
-135(TCP/UDP) : epmap - DCE End Point Resolution
Linux - 18 (TCP/UDP) : Message Send Protocol
- 71~74(TCP/UDP) : Remote Job Service
- 95(TCP/UDP) : Supdup
- 209(TCP/UDP) : Gmtp - Quick Mail Transfer Protocol
- 538(TCP/UDP) : GNUstep Distributed Object
6)ICMP 타입 지원 유무로 운영체제 종류 확인
Sing 도구로 스캔하여 어떤 ICMP 요청에 응답하는지를 보고 운영체제를 추측할수 있다.
7)NMAP을 사용하는 방법
Nmap의 기능에 OS 종류를 추측해 주는 옵션이다.
nmap -v -O 192.168.1.20
8)넷 크래프트 웹사이트에서 확인
운영체제에 대한 체계적인 탐지 정보를 가지고 있는 사이트로 상세한 정보 획득이 가능하다.
uptime.netcraft.com
서비스의 상세 정보 수집
1) 서비스의 종류 파악
각포트에 해당하는 서비스 의 종류를 파악한다.
2) 서비스 데몬의 종류 및 버젼
3)해당 데몬의 취약점 정리
Hacking 준비 과정
Library 소스 컴파일
1) 소스 컴파일 이란
컴파일 이란 컴퓨터에서실행할 수 있는 형태로 고치는 과정을 컴파일이라고 한다.
즉, 시스템을 운영하는데 필요한 프로그램을 설치하기 위한 방법이다. 컴파일 과정을 통해 프로그램을
설치하는 방법에는 소스컴파일을 하는 방법과 RPM 을 통해 설치하는 방법이 있다. RPM 명령어를 통해
프로그램을 설치할경우 의존성있는 파일 까지 동시에 설치해주기 때문에 편하지만 지정되어 있는 상태로
설치되기 때문에 우리가 원하는 형태로 바꿀수 없다. 소스 컴파일을 통해 프로그램을 설치 할 경우 설치
경로 및 다양한 옵션을 통하여 사용자가 원하는 형태로 설치할수있다.
2) 스스템 운영시 필요한 Library 설치 순서
-1 configure
시스템 컴파일 환경을 체크하고 체크한 결과에 따라 make 기술 파일을 생성한다.
configure 명령어를 사용하여 Makefile 을 생성, 수정 혹은 Update 한다.
#./configure --prefix=/usr/local/xxx
-2 make
configure 명령어를 통해 생성된 Makefile을 필요한 명령어(gcc 등의 명령어)
이용해 재 컴파일 후 실행 파일을 생성한다.
make
-3 make install
make 명령어를 통해 생성된 싶행파일을 이용해 필요한 파일을 설치,복사 한다.
make install
-4 prm 명령어
rpm 명령어를 통해 Library 를 설치할수 있다.
rpm -ivh xxx.rpm
---------------------------------------------------------------------------------------------
3 Network Hacking
3.1 Spoofing (스푸핑)
Spoofing
1)Spoofing이란?
Spoofing이란 '속이다'라는 의미를 가진다. 인터넷이나 로컬에서 존재하는 모든 연결에 Spoofing이
가능하며, 정보를 얻어내는 것 이외에도 시스템을 마비시키는 것도 가능하다. 흔히 일어나는 IP 충돌문제
역시 고의가 아닌 ip 주소 Spoofing일 경우도 있다.
2) Spoofing종류
-1 ARP Spoofing
-2 IP Spoofing
-3 DNS Spoofing
ARP Spoofing
ARP Spoofing 은 로컬에서 통신하고 있는 서버와 클라이언트의 ip주소에대한 2계층 MAC 주소를 공격자의
MAC 주소로 속여 클라이언트가 서버로 가는 패킷이나 서버에서 클라이언트로 가는 패킷을 중간에 가로채는
공격이다. 공격자는 이패킷을 읽고 확이한 후 정상적인 목적지로 향하도록 다시 돌려보내 연결이 끊어지지 않고
연결되도록 유지한다.
1)ARP-Spoofing / Packet-Relay 실습 예제
-A ARP Spoofing 툴 (http://www.vergenet.net/linux/fake)
통신을 하기 위해서 ip주소에 해당하는 mac 주소를 가지고 있다. 하지만 ARP Spoofing공격은
ip주소에 해당하는 본래 MAC 주소가 아닌 다른 컴퓨터의 mac 주소로 변경해 주는 툴이다.
fake-1.1.2-xxx.rpm 다운로드 rpm 설치
rpm -ivh fakexxx.rpm
-B 패킷 Relay 툴
공격 대상이 되는 컴퓨터는 목적지로 패킷을 보내지만 MAC 주소가 변경되어 해커에게 패킷이 전송된다.
해커에게 온 패킷은 다시 목적지로 보내져야 통신이 이뤄지기 때문에 목적지에 패킷을 전송하는 툴이다.
fragrouter-1.6.tar.gz 다운로드 -> tar -xzf fragrouter-1.6.tar.gz 해당 디렉토리로 이동후
./configure -> make && make install
#vi sendarp.sh
while true
do
send_arp server IP 주소 : Hacker MAC 주소 : Client IP 주소 : Client MAC 주소
echo "ing...."
sleep 5
done
./sendarp.sh로 실행
./fragrouter -B1
- Echo Reply
ping.exe 사용
-> Solarwinds 의 ping sweep 활용
2) ICM - Timestamp Request
- Timestamp Reply
"sing - tstamp
#./sing -c 4 -tstamp 상대방 IP
-c Packet 몇개
운영체제별 ICMP 타입 지원
운영체제 | Information | Timestamp | Address Mask |
Linux 커널 2.2~2.6 | No | Yes | No |
FreeBSD | No | Yes | No |
Solaris | No | Yes | Yes |
HP-UX | Yes | Yes | Yes |
AIX v4 | Yes | Yes | No |
Windows NT SP4 | No | No | No |
Windows 2000 | No | Yes | No |
Windows XP | No | Yes | No |
NMAP를 사용하여 시스템 활성화 여부 확인
#nmap -옵션
옵션 | 내용 |
-PS | TCP SYN 패킷만을 보내 시스템 활성 여부 검사 |
-PI | 시스템 활성화 여부를 ICMP로 검사 |
-PB | TCP 와 ICMP 둘다 사용해 호스트 활성 여부 검사 |
-sP | Ping 사용 |
-PE | Echo 사용 |
-PP | Timestamp 사용 |
-PT | Ping 대용으로 ICMP 패킷을 이용하지 않고,TCP 패킷을 이용해 해당시스템이 작동되는지확인 |
-PM | Address Mask 사용 |
TCP & UDP Port
1)포트란 ?
포트는 목적지 호스트 까지 찾아온 패킷이 실제로 전달되어야 할 응용프로그램을 정확히 결정하기
위해서 사용하는 번호 이다.
2)포트와 데몬(서비스)의 관계
활성화된 데몬 또는 서비스에 의해서 열리게되며, 각각의 응용계층 프로토콜은 고유의
포트를 가진다. 시스템에는 65536개의 포트가 있으며, 0번 부터 1024번 포트가 Well Known 포트라고 불린다.
Well Known 포트는 일상적으로 잘 알려진 서비스를 위해 고유의 사용 용도가 정해져 있다.
보통 0번 포트는 쓰지 않으며, 1024번 포트부터 65534 포트는 임의의 사용 용도를 위해서, 또는 클라이언트가
서버에 접속 시에 할당 받는 포트의 범위이다.
3)TCP 포트와 UDP
TCP 포트와 UDP 포트는 별도로 취급되므로 동일한 번호를 가진 TCP 포트와 UDP 포트가 존재할 수있다.
4)Well Know 포트
잘 알려진 포트 (WellKnown Port): 0번 에서 1024번까지
등록된 포트 (Registered Port) : 1024번에서 49151번까지
동적인 혹은 사적인 포트(Dynamic or Private Port) : 49152번에서 65535번까지
각포트별 서비스 내용
포트번호 | 서비스 | 서비스 내용 |
20(TCP) | FTP-data | FTP연결후데이터 송수신을위한포트 |
21(TCP) | FTP | FTP 연결시 인증과 컨트롤을 위한포트 |
23(TCP) | Telnet | Telnet 서비스로서 원격지의 서버의 실행창을 얻어냄 |
25(TCP) | SMTP | 메일보낼때 사용하는 서비스 |
53(UDP) | DNS | 이름을 해석하는 데 사용하는 서비스 |
69(UDP) | TFTP | 인증고정 없이 단순하게 파일을 전송 |
80(TCP) | HTTP | 웹서스 |
110(TCP) | POP3 | 메일서버로 전송된 메일을 읽을 때사용 |
111 | RPC | SUN의 원격에서 서버의 프로세스 실행 |
135(TCP) | RPC/DCE Endpoint Mapper | |
137(UDP) | NetBIOS 이름해석 서비스 | |
139(UDP) | NetBIOS 데이터그램 서비스 | |
143 | IMAP | 메일 서버로 전송된 메일을 읽을때 사용 |
161 | SNMP | 네트워크 관리와 모니터링 |
445(TCP/UDP) | Direct Host |
22(TCP) | SSH | 보안로그인 |
137,138(UDP) | SAMBA | LINUX와 WINDOWS 파일공유 |
139,445(TCP) | SAMBA | LINUX와 WINDOWS 파일공유 |
Port Scan(Service Scan)의 유형
1)UDP Open Scan
포트가 열려있는 겨우, 아무런 응답이 없으며,포트가 닫혀 있을 경우에는 ICMP Unreachable 패킷을 받게 된다.
단점:: 과도한트래픽 유발
2)TCP Open Scan
포트가 열려있을 경우, 세션이 성립되며, 포트가 닫혀 있을 경우에는 RST+ACK 패킷을 받게 된다.
단점:: 로그 발생
3)TCP Half Open Scan
포트가 열려있을 경우, 서버로 부터SYN+ACK 패킷을 받은후, RST 패킷을 보내여 연결을 끊는 방법을 이용한다.
포트가 닫혀 있을 경우에는 Open Scan의 경우와 동일하다.
4)ACK Scan
공격대상 호스트에 ACK 플래그가 설정된 패킷을 여러번 전송하고 RST 응답 패킷을 확인하여
Windows 필드 값이 0이 아니면 열린포트로 가정한다.
5)Fragmented TCP Scan
프로그멘트 스캔방식은 패킷을 분화 전송하여 방화벽이나 IDS를 통과한 후 대상 컴퓨터에서 패킷이
조합되도록 하는 스캔방식이다.
6)Spoofed TCP Scan
공격자의 IP주소를 노출시키지 않고 상대를 스캔하기 위해 사용되는 방법이다. 조작된Source IP 주소를
사용하여 생성한 패킷을 사용하므로 공격당하는 상대는 공격자를 정확히 알기 힘들게 된다. 공격자는
자신에게 스캔 결과가 돌아오지 않기 때문에 공격 대상이 전송한 패킷을 스니핑하여 스캔결과를 확인해야한다.
7)시간차 스캔
공격의 차단을 피하거나, 탐지를 회피하기 위해 특정한 시간 간격으로 스캔 패킷을 보내는 기법이다.
단,공격 대상 Network의 모든 시스템을 Scan하는 시간이 많이 필요하다.
8)FIN, Xmas, Null Scan
포트가 열려 있을 경우에는 응답이 없고 포트가 닫혀 있는 경우에만 RST 패킷이 되돌아 온다.
Port Scan 수행
1)nmap 을 통해 Port Scan
nmap 다운로드 :http://nmap.org/dist/
nmap 옵션
옵션 | 내용 | 옵션 | 내용 |
-sT | Connect()함수를 이용한 open 스캔 | -f | 스캔시 방화벽을 통과할 수 있도록 패킷을 분할 |
-sS | 세션을 성립시키지 않는 TCP syn 스캔 | -v | 스캔세부 사항 표시 |
-sF | Fin 패킷을 이용한 스캔 | -PO | 스캔전 Ping 을 하지 않고 ICMP Echo Request를 허용하지 않는 호스트에 대한 스캔 시 설정 |
-sN | Null 패킷을 이용한 스캔 | -PT | Ping 대용으로 ICMP 패킷을 이용하지 않고, TCP 패킷을 이용해 해당 시스템이 작동되는지 확인 |
-sX | XMas 패킷을 이용한 스캔 | -PS | TCP SYN 패킷만을 보내 시스템 활성 여부 검사 |
-sP | Ping 을 이용한 활성 호스트 확인 | -PI | 시스템의 활성화 여부를 ICMP 로 검사 |
-sU | UDP 포트 스캔 | -PB | TCP 와 ICMP 둘다 사용해 호스트 활성 여부 검사 |
-sR | RPC 포트 스캔 | -S | 출발지 IP 주소 Spoofing |
-sA | Ack 패킷에 대한 TTL 값의 분석 | -O | 시스템 운영체제 추정(OS Detection) |
-sW | Ack 패킷에 대한 윈도우 크기분석 | -n | DNS Lookup을 하지 않는다. |
-b | FTP 바운스 스캔 | -R | DNS Lookup을 수행한다. |
-D | [Spoofed-IP] 공격자의 IP를 변경 | -P | 포트 지정 스캔 1: -p 21 or -p 1-65535 2: -p U:53,TCP:21,1024-1000 |
-sV | 서비스 스캔 | ||
-T | 시간차 스캔 0:Psranoid 1: Sneaky 2: Polite 3: Normal 4 : Aggressive 5 : Isane |
telnet-server rpm 설치후
[root@localhost /etc/init.d]# chkconfig telnet on
[root@localhost /etc/init.d]# service xinetd restart
name를 사용한 각종 포트 스캔
1)UDP Open Scan
UDP Packet을 이용하여 상대방 시스템의 포트를 스캔한다. 응답이 없을 경우 해당 시스템 포트는
Active 상태로 확인한다. 하지만 UDP Packet 전송 중 유실될 경우 해당 시스템의 포트가 Active로
오인될수 있다.
2)TCP Open Scan
3 Way-Handshaking 을 통해 해당 스스템의 포트 상태를 확인한다. 3Way-Handshaking을 통하여
세션을 맺기 때문에 Log가 발생한다.
ex) root#nmap -v -sT 192.168.1.20
3)TCP Half Open Scan
ex)root#nmap -v -sS 192.168.1.20
4)Fin/Null /X-mas Scan
nmap -v -sF
nmap -v -sN
nmap -v -sX
Ack Scan
nmap -v -sA
nmap -v -sW
6)탐지되지 않기 위해 시간차 스캔 - IDS 회피
Paranoid : 5분이나 10분 간격으로 스캔을 한다.
Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위로 스캔한다.
Polite : 0.4초 단위로 스캔한다.
Normal : 정상
Aggressive : 호스트 타임아웃 :5분, 패킷 당 1.25초까지 응답을 기다린다.
Insane : 호스트 타임아웃 : 75초, 패킷 당 0.3초까지 응답을 기다린다.
nmap -sS -T 3 192.168.1.20
7)Fragmented TCP Scan - Firewall 통과
스캔할 포트 번호를 숨겨서 방화벽을 통과하기 위한 방법이다.
nmap -v -f -sT 192.168.1.20
8)Spoofed TCP Scan
nmap -v -ST 192.168.1.20 -D 220.149.93.201
9)UDP Open Scan
nmap -v -sU 192.168.1.20
네트워크 전체를 스캔할 경우
nmap -v -sT 192.168.1.20
운영체제 종류 확인
1)배너 그래빙 (Banner Grabbing)
Banner Grabbing 은 Telnet과 같이 원격지의 시스템에 로그인을 시도하면 나타나는
안내문과 같은 메시지를 확인하여 정보를 파악하는 방법으로 23번 포트에 Telnet
접속을 시도한 다음 화면에서는 운영체제의 버전과 커널 버젼을 확인할 수 있다
이러한 배너 그래빙은 23번 포트 이외에도 21,25,143번 포트에서도 가능하다.
2)Fin 스캔에 대한 반응
Fin 스캔은 모든 운영체제에 적용되는 것은 아니며 적용되는 운영체제는 윈도우,BSD
Ciscom, Iris 등으로 Fin 스캔의 가능 여부에 따라 운영체제를 판별할 수 있다
3)TCP 연결 시 최초 패킷의 원도우 크기 관찰
3Way-Handshaking을 통해 세션을 맺을 때 주고 받는 내용중 Window Size 를 통해
운영체제를 판별할수 있다. Windows2003 TCP Window Size 초기값은 64240, Solaris의
TCP Window Size 초기값은 64240, CentOS의 TCP Windows Size 초기값은 5840이다
4)세션 경결 시 TCP 패킷의 시퀀스 넘버 생성을 관찰
3Way-Handshaking을 통해 세션을 맺을때 교환하는 정보중 하나인 시퀀스 넘버를
통해 어떤 운영체제를 사용하는지 알수 있다. 윈도우일 경우 시간에 따른 시퀀스 넘버가
증가하고 리눅스의 시퀀스 넘버는 랜덤한 값으로, FreeBSD / Digital-Unix /IRIX/Solaris의
시퀀스 넘버는 시간에 따른 랜덤한 증가를 하게 된다.
5)각 운영체제마다 존재하는 서비스의 유무 확인
각 운영체제 마다 특별히 존재하는 서비스를 통해 해당 운영체제를 확인할수 있다.
ex) Windows -1512(TCP/UDP) : Wins
-666(TCP/UDP) : Doom Id Software
-135(TCP/UDP) : epmap - DCE End Point Resolution
Linux - 18 (TCP/UDP) : Message Send Protocol
- 71~74(TCP/UDP) : Remote Job Service
- 95(TCP/UDP) : Supdup
- 209(TCP/UDP) : Gmtp - Quick Mail Transfer Protocol
- 538(TCP/UDP) : GNUstep Distributed Object
6)ICMP 타입 지원 유무로 운영체제 종류 확인
Sing 도구로 스캔하여 어떤 ICMP 요청에 응답하는지를 보고 운영체제를 추측할수 있다.
7)NMAP을 사용하는 방법
Nmap의 기능에 OS 종류를 추측해 주는 옵션이다.
nmap -v -O 192.168.1.20
8)넷 크래프트 웹사이트에서 확인
운영체제에 대한 체계적인 탐지 정보를 가지고 있는 사이트로 상세한 정보 획득이 가능하다.
uptime.netcraft.com
서비스의 상세 정보 수집
1) 서비스의 종류 파악
각포트에 해당하는 서비스 의 종류를 파악한다.
2) 서비스 데몬의 종류 및 버젼
3)해당 데몬의 취약점 정리
Hacking 준비 과정
Library 소스 컴파일
1) 소스 컴파일 이란
컴파일 이란 컴퓨터에서실행할 수 있는 형태로 고치는 과정을 컴파일이라고 한다.
즉, 시스템을 운영하는데 필요한 프로그램을 설치하기 위한 방법이다. 컴파일 과정을 통해 프로그램을
설치하는 방법에는 소스컴파일을 하는 방법과 RPM 을 통해 설치하는 방법이 있다. RPM 명령어를 통해
프로그램을 설치할경우 의존성있는 파일 까지 동시에 설치해주기 때문에 편하지만 지정되어 있는 상태로
설치되기 때문에 우리가 원하는 형태로 바꿀수 없다. 소스 컴파일을 통해 프로그램을 설치 할 경우 설치
경로 및 다양한 옵션을 통하여 사용자가 원하는 형태로 설치할수있다.
2) 스스템 운영시 필요한 Library 설치 순서
-1 configure
시스템 컴파일 환경을 체크하고 체크한 결과에 따라 make 기술 파일을 생성한다.
configure 명령어를 사용하여 Makefile 을 생성, 수정 혹은 Update 한다.
#./configure --prefix=/usr/local/xxx
-2 make
configure 명령어를 통해 생성된 Makefile을 필요한 명령어(gcc 등의 명령어)
이용해 재 컴파일 후 실행 파일을 생성한다.
make
-3 make install
make 명령어를 통해 생성된 싶행파일을 이용해 필요한 파일을 설치,복사 한다.
make install
-4 prm 명령어
rpm 명령어를 통해 Library 를 설치할수 있다.
rpm -ivh xxx.rpm
---------------------------------------------------------------------------------------------
3 Network Hacking
3.1 Spoofing (스푸핑)
Spoofing
1)Spoofing이란?
Spoofing이란 '속이다'라는 의미를 가진다. 인터넷이나 로컬에서 존재하는 모든 연결에 Spoofing이
가능하며, 정보를 얻어내는 것 이외에도 시스템을 마비시키는 것도 가능하다. 흔히 일어나는 IP 충돌문제
역시 고의가 아닌 ip 주소 Spoofing일 경우도 있다.
2) Spoofing종류
-1 ARP Spoofing
-2 IP Spoofing
-3 DNS Spoofing
ARP Spoofing
ARP Spoofing 은 로컬에서 통신하고 있는 서버와 클라이언트의 ip주소에대한 2계층 MAC 주소를 공격자의
MAC 주소로 속여 클라이언트가 서버로 가는 패킷이나 서버에서 클라이언트로 가는 패킷을 중간에 가로채는
공격이다. 공격자는 이패킷을 읽고 확이한 후 정상적인 목적지로 향하도록 다시 돌려보내 연결이 끊어지지 않고
연결되도록 유지한다.
1)ARP-Spoofing / Packet-Relay 실습 예제
-A ARP Spoofing 툴 (http://www.vergenet.net/linux/fake)
통신을 하기 위해서 ip주소에 해당하는 mac 주소를 가지고 있다. 하지만 ARP Spoofing공격은
ip주소에 해당하는 본래 MAC 주소가 아닌 다른 컴퓨터의 mac 주소로 변경해 주는 툴이다.
fake-1.1.2-xxx.rpm 다운로드 rpm 설치
rpm -ivh fakexxx.rpm
-B 패킷 Relay 툴
공격 대상이 되는 컴퓨터는 목적지로 패킷을 보내지만 MAC 주소가 변경되어 해커에게 패킷이 전송된다.
해커에게 온 패킷은 다시 목적지로 보내져야 통신이 이뤄지기 때문에 목적지에 패킷을 전송하는 툴이다.
fragrouter-1.6.tar.gz 다운로드 -> tar -xzf fragrouter-1.6.tar.gz 해당 디렉토리로 이동후
./configure -> make && make install
#vi sendarp.sh
while true
do
send_arp server IP 주소 : Hacker MAC 주소 : Client IP 주소 : Client MAC 주소
echo "ing...."
sleep 5
done
./sendarp.sh로 실행
./fragrouter -B1