모의 해킹/모의해킹 수행하기

모의해킹 수행하기

채이_E 2023. 11. 29. 15:46

모의해킹 시나리오 작성

Footprinting

- 발자국을 살펴보는 행위 -> 해킹을 위한 사전 준비 작업

- 간접적으로 외부에 노출되어 있는 정보를 획득하는 기법

        > 대상 시스템의 직접적인 반응 없이 정보를 획득하는 기법 -> 직접 데이터를 주고 받지 않음

        > 대상에 정보 수집의 흔적을 남기지 않음

- 대상의 전반적인 윤곽을 형성하기 위한 기초 작업

        > 전체 모의해킹 과정의 70~80%의 시간을 할애함

- 대상이 소유하지 않은 시스템을 공격 대상으로 선정할 수 있으므로 공격의 범위를 잘 고려해야 함

획득할 정보 범위

- 정보의 질을 따지지 않고 최대한 많은 양의 정보를 수집

        > 대상의 직접적인 반응으로 확인된 정보가 아니므로 차후 필터링 할 필요가 있음

- 도메인 정보, 호스트 이름, IP 주소, 사용된 기술과 환경설정, 사용자 이름, 문서, 프로그램 소스코드, 계정 정보, 연락처 등

Google 기본 검색

- 대/소문자를 구별하지 않음

- 와일드 카드(.*)를 지원함

- 자동 단어 확장 기능

- 검색어는 최대 10단어로 제한됨

- 구문 검색, 공백, 일반적인 단어, 순서를 포함한 검색을 사용할 수 있음

- 논리연산자 지원됨

        > 기본적으로 OR로 검색됨

- 검색어는 왼쪽에서 오른쪽으로 순차적인 분석을 수행함

Google 고급 검색

- 단어나 문장을 활용한 검색기능 외에 검색 연산자를 이용하는 검색

- 다중 옵션 가능

- 검색 연산자는 무조건 소문자로 작성해야 함

- 검색 연산자와 검색어 사이에 공백이 있으면 안됨

검색 연산자

검색어 사용법 의미
intitle: intitle:검색어1 [검색어2] 제목에 검색어가 1개라도 포함되어 있으면 출력
allintitle: allintitle:검색어1 [검색어2] 제목에 검색어가 모두 포함되어 있는 페이지 출력
intext: intext:검색어 본문에 검색어가 포함되어 있는 페이지 출력
site: site:URL 특정 도메인에 해당되는 페이지 출력
inurl: inurl:검색어 URL에 검색어가 포함되어 있는 페이지 출력
link: link:URL Link에 URL이 지정된 페이지 출력
numrange: numrange:숫자-숫자(범위) 지정된 숫자 범위내의 결과값 검색
cache: cache:URL 저장된 페이지에서 URL에 해당하는 페이지 출력
filetype: filetype:확장자 확장자로 지정된 종류의 파일 검색
검색 옵션 의미
+ 비슷한 문자를 포함하여 검색
- 검색 결과에서 제외
" " 완전한 문구가 포함된 결과 검색
. 한 단어를 포함한 검색
* 모든 단어 검색
|, OR 또는

Google 고급 검색 예제

- inurl:admin site:co.kr filetype:pdf

 

시나리오에 따른 정보 수집

탐색(Scan, Scanning)

- Footprint 단계에서 수집한 정보의 사실 유무 확인 및 누락된 정보 확인

- 대상 시스템에 직접적으로 데이터를 전송하여 확인함

        > 대상 시스템에 Log를 남길 확률이 높음 -> 공격자, 모의해커의 흔적 노출

- 침투 대상의 네트워크에서 실제 동작 중인 세스템, 서비스, 프로그램, OS 확인

- 확인된 시스템 및 프로그램의 취약점 정보 수집

종류

- Active Host Scanning -> 실제 동작중인 시스템 식별

- Port Scanning -> 동작중인 시스템에서 제공하는 서비스 식별

- Target Scanning -> 특정 취약점을 제공하는 시스템 식별

- Vulnerability Scanning -> 동작중인 시스템에서 발생할 수 있는 알려진 취약점 식별

Active Host Scanning

- 목적

        > 침투 대상이 될 수 있는 시스템을 식별 -> 실제 동작중인 시스템 확인

- 추가로 시스템의 기본적인 정보를 확인함

        > 데이터 전송 시간, OS 종류, IP 주소, MAC 주소 ...

- 주의 : 방화벽에 의해 정확한 정보를 획득하지 못할 수도 있음

Active Host Scanning

- ICMP echo ping : ICMP 메시지를 이용하여 동작중인 호스트를 식별하는 방식

- ARPing : ARP 패킷을 이용하여 동작중인 호스트를 식별하는 방식

- TCP ping : TCP 패킷을 이용하여 동작중인 호스트를 식별하는 방식

- UDP ping : UDP 패킷을 이용하여 동작중인 호스트를 식별하는 방식

Port Scanning

- 목적

        > 침투 대상이 될 수 있는 서비스를 식별 -> 공격 데이터를 전송할 수 있는 프로그램 식별

- 주의 -> 방화벽에 의해 정확한 정보를 획득하지 못할 수도 있음

Port Scanning 종류

- UDP Port Scanning

        > ICMP 메시지를 이용하여 동작중인 호스트를 식별하는 방식

- TCP Port Scanning

        > Connect Scan, Half Open Scanning, X-Mas Scan, Fin Scan, Null Scan, IDLS Scan ...

NMAP

- 원격 컴퓨터들의 자세한 정보를 알아낼 수 있음

- 사용법

        > #nmap [Scan Type(s)] [Options] 목적지

        > 목적지 : hostnames, IP addresses, networks 등...

NMAP 옵션

Scan Type General Option
-sT TCP Connect Scanning -P0 Scan 하기 전에 Ping을 보내지 않음
-sS TCP SYN Scanning -O OS Detection
-sF TCP FIN Scanning -v 스캔 세부사항 표시
-sX TCP X-Mas Scanning -p Port 지정
-sN TCP Null Scanning -f Packet 분할
-sU UDP Scanning    
-sO Protocol Scanning    

UDP Port Scanning

- UDP Packet을 이용해 대상 시스템 Port Scan

- Close Port -> ICMP Destination Unreachable 응답

- Open Port -> 응답 없음

단점

- UDP 혹은 ICMP의 경우 필터링 장치에 의해서 차단될 가능성이 높음

- 응답이 없는 경우를 Open으로 인식하므로, 방화벽에 의해 패킷이 차단되는 경우 Open / Closed의 여부가 불분명함

장점

- 정상적인 통신이 아니기 때문에 Log가 남지 않음

 TCP Port Scanning

- TCP Packet을 이용해 대상 시스템 Port Scan

- TCP의 Flag를 이용해 다양한 방법으로 Scan을 수행함

TCP Connect Scanning (Full Connection Scan)

- 3 Way-Handshaking을 통해 대상 시스템의 포트 상태 확인

- Port가 열려있을 경우 세션 수립 / 닫혀있을 경우 RST Packet 수신

- 결과가 정확하고 일반 계정으로 Scanning 가능함

- Overhead가 크고 Log가 남아 발각되기 쉬움

- #nmap -sT 60.60.60.1

Half Open Scan

- 포트가 열려있을 경우 S/A Packet을 보내 연결을 끊는 방법

- 닫혀 있을 경우 RST Packet 수신

- 세션이 수립되지 않게 ACK 신호를 안보내기 때문에 비교적 Log를 적게 남김

- #nmap -sS 60.60.60.1

FIN Scanning

- RST Flag가 설정된 Packet을 확인함으로써 포트가 닫혔음을 판단함

- IDS를 회피할 수 있는 가능성이 높지만, 목표 시스템이 UNIX 플랫폼일 경우만 가능

- Open/Filter/오류의 결과가 불분명함

- #nmap -sF 60.60.60.1

X-mas Scanning

- FIN, PSH, URG, Flag를 동시에 설정하여 scan함

- IDS를 회피할 가능성이 높지만, 목표 시스템이 UNIX/Linux 플랫폼일 경우만 가능

- Open/Filter/오류의 결과가 불분명함

- #nmap -sX 60.60.60.1

NULL Scanning

- 모든 Flag를 설정하지 않고 Scan함

- IDS를 회피할 가능성이 높지만, 목표 시스템이 UNIX/Linux 플랫폼일 경우만 가능

- Open/Filter/오류의 결과가 불분명함

- #nmap -sN 60.60.60.1

IDLE Scanning

- IDLE Host의 반응을 통해 침투 대상의 활성화된 port 정보를 확인함

        > IP Header의 Identification 필드를 지속적으로 모니터링 하여 변화를 관찰함

        > IDLE Host -> Windows System(RST 전송), 다른 프로그램이 동작 중이면 정확한 결과 확인이 어려움

- 출발지 IP를 IDLE PC로 변조하고 확인하고 싶은 서비스의 연결요청(SYN)을 전달함

- Target Port가 Open일 경우

        > 연결 요청(SYN)에 대한 응답(SYN/ACK)을 출발지로 지정된 IDLE PC로 전송함

        > 비정상 TCP(SYN/ACK)를 요청 받은 IDLE Host에서 RST를 응답으로 전송함

                ㄴ RST 전달을 위해 IP의 ID값을 +1 값으로 전달함

        > 지속적으로 모니터링을 수행함

                ㄴ 연속적으로 전달하는 응답에서 IP의 ID 값을 +1 값으로 전달함 -> 모니터링 ID가 2씩 증가함

- Target Port가 Close일 경우

        > 연결 요청(SYN)에 대한 응답(RST)을 출발지로 지정된 IDLE PC로 전송함

        > RST 요청 받은 IDLE Host에서 RST에 대한 응답을 발생시키지 않음

                ㄴ Target의 요청에 의해 추가 패킷이 발생하지 않음

- 지속적으로 모니터링을 수행함

                ㄴ 연속적으로 전달하는 응답에서 IP의 ID값을 +1 값으로 전달함 -> 모니터링 ID가 1씩 증가함

Hping3를 이용한 IDLE Scanning

- 사용법

        > 기본 사용법 -> #hping3 <host> [options]

- Options

-r ID 모니터링 -p <dport> 목적지 Port 주소 설정
-a <Spoofing ID> 출발지 IP 주소 변조 -S TCP flag에서 SYN 세팅

 

- IDLE Host 상태 모니터링 : #hping3 -r 172.16.10.10

- Target 시스템 Port Scan 요청 전송 : #hping3 -a 172.16.10.10 172.16.10.20 -p 22 -s