[normaltic 비기너 클래스 1기] 2023-08-09 Skill Course 1주차 내용 정리

2023. 8. 22. 13:03normaltic 비기너 클래스 1기/내용 정리

해킹 프로세스

 

공격할 대상의 IP주소를 알고 있는 상황에서 해킹은 아래의 순차적인 과정을 거쳐서 진행된다.

 

  1. 정보 수집
  2. 서비스 분석
  3. Exploit
  4. Post Exploit

1. 정보 수집

정보 수집 단계에서는 공격 대상에 대한 정보를 수집하는 단계이다. 주로 포트 스캔, 웹 디렉터리 스캔이 이뤄지며 열린 포트에서의 서비스들을 통해 다음 단계에서 활용될 정보들 얻기도 한다.

 

2. 서비스 분석

서비스 분석 단계에서는 정보 수집 단계에서 얻은 정보들을 활용하여 공격 대상의 취약점을 분석하는 단계이다. 취약점들을 분석하여 어떻게 공격을 진행할지에 대한 정보를 획득하고 공격 준비를 주로 한다.

 

3. Exploit

Exploit 단계에서는 서비스 분석 단계에서 얻은 취약점을 통한 공격 방법을 사용하여 직접 공격 대상에 대한 공격을 진행하는 단계이다. 공격을 진행하여 공격 대상의 쉘을 획득한다.

 

4. Post Exploit

Post Exploit 단계에서는 Exploit 단계에서 공격 대상 시스템의 쉘을 획득한 후 시스템을 장악하는 단계이다. 주로 공격 대상 시스템에서 권한 상승을 하여 root(최고관리자) 권한을 얻거나 벡도어를 설치하기도 한다.

 

정보 수집

 

정보 수집 단계에서는 주로 포트 스캔을 진행한다. 포트 스캔을 통하여 공격 대상의 시스템에서 열려있는 포트를 파악 후 해당 포트에서 취약점 분석 대상에 대한 정보들을 얻을 수 있다. Linux에서 포트 스캔에 사용되는 명령어로는 netstat, nmap이 존재한다.

 

nmap

nmap [ 옵션 ] [ 타겟 호스트 ]

 

nmap에는 포트 스캔 뿐만 아니라 아래에 나열된 대표적인 기능들도 사용할 수 있다. 

 

  • 호스트 스캔 : 네트워크상 컴퓨터들을 확인하는 방법으로 ping 응답이나 특정 포트가 열린 컴퓨터를 확인할 수 있다.
  • 포트 스캔 : 하나 혹은 그 이상의 대상 컴퓨터들의  열린 포트들을 확인 할 수 있다
  • 버전 탐지 : 응용 프로그램의 이름과 버전 번호를 확인 할 수 있다
  • 운영 체제 탐지 : 원격으로 대상 컴퓨터의 운영체제 및 네트워크 장치의 하드웨어 특성을 확인할 수 있다.

 

- 호스트 스캔

 

ARP Scan
ICMP Ping Scan

 

ex) nmap -sn 10.0.2.4/24

 

호스트 스캔은 스캔을 진행하는 당사자가 스캔 대상이 되는 네트워크 대역대에 속하냐 아니냐에 따라 스캔 방법이 달라진다. 스캔 대상과 같은 네트워크 대역에 속해있는 경우 ARP Scan을 사용하고 속하지 않은 경우 ICMP Ping Scan을 사용한다. 

 

- 포트 스캔

 

포트 스캔

 

ex) nmap 10.10.72.131

 

nmap 명령어에 아무런 옵션도 추가하지 않고 사용하게 되면 PORT, STATE, SERVICE 필드만 확인할 수 있다. 위 사진에서 출력된 리스트는 22/tcp open ssh, 80/tcp open http이며 22번 포트는 open 상태이고 ssh를 서비스 하고 80번 포트는 open 상태이고 http를 서비스한다는 것을 확인할 수 있다.

 

포트 스캔은 먼저 스캔 대상과 통신 테스트 진행 후 포트 스캔을 진행한다. 즉, 통신 테스트 실패시 포트 스캔을 진행하지 않는다. 그러나 스캔 대상과의 통신 테스트가 실패했다 해서 스캔 대상이 활성화되어있지 않다는 성급한 판단은 금물이다. 스캔 대상 시스템의 관리자가 의도적으로 응답을 하지 않게 설정을 해놓을 수 있기 때문이다.

 

이러한 상황도 생길 수 있어서  nmap 명령어의 -Pn 옵션이 존재한다. -Pn 옵션은 스캔 대상에 대한 통신 테스트를 진행하지 않고 바로 포트 스캔을 하도록 하는 옵션이다.

 

-버전 탐지

 

버전 탐지

 

ex) nmap -sV 10.10.72.131

 

포트 스캔 기능을 사용하여 출력된 리스트들의 서비스 버전까지 출력해주는 기능이다. -sV 옵션을 추가하여 사용 가능하며 이번에는 PORT, STATE, SERVICE에 이어서 VERSION까지 추가되었다. VERSION에서는 해당 포트에서 실행 중인 서비스의 버전 정보를 확인할 수 있다.

 

출력 결과 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0), 80/tcp open http Apache httpd 2.4.29 ((Ubuntu))이며 22번 포트에서 서비스중인 ssh 버전은 OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)이며 80번 포트에서 서비스중인 http 버전은 Apache httpd 2.4.29 ((Ubuntu))인 것을 확인할 수 있다.

 

-운영 체제 탐지

 

운영 체제 탐지

 

ex) nmap -O 10.18.30.184

 

포트 스캔 기능에 스캔 대상의 운영 체제까지 출력해 주는 기능이다. -O(대문자 o) 옵션을 추가하여 사용 가능하며 운영 체제의 버전까지 확인할 수 있다. 출력된 결과를 보면 스캔 대상의 운영 체제는 Linux 2.6.32이라는 것을 확인 할수 있다.

 

-옵션에 따른 다양한 기능

 

4개의 대표 기능 말고도 어떤 옵션을 추가하냐에 따라 다양한 기능들을 사용할 수 있다.

 

옵션 설명 예시
-sn (No Port Scan) 포트 스캔을 진행하지 않고 연결 가능한 호스트 출력 nmap -sn 10.0.2.4/24
-Pn 통신 테스트 없이 포트 스캔 nmap -Pn 10.0.2.4
-sS 스텔스 스캔 (3-way-handshake 프로토콜에서 마지막 ack 패킷을 보내지 않아 로그를 남기지 않는 방법) nmap -sS 10.0.2.4
-sV 서비스 버전 출력 nmap -sV 10.0.2.4
-sC 열린 포트에 대한 부가 정보까지 스크립트로 출력 nmap -sC 10.0.2.4
-p 특정 포트 번호나 범위 입력 시 해당 포트만 스캔 nmap 10.0.2.4 -p 1000-2000
(1000번~2000번 포트 스캔)
nmap 10.0.2.4 -p 22 (22번 포트만 스캔)
nmap 10.0.2.4 -p- (모든 포트 스캔)
-O 운영 체제 정보 출력 nmap -O 10.0.2.4
-T<1~5> 1에서 5까지 점진적으로 포트 스캔 속도차이를 줌 nmap -T4 10.0.2.4
-f 방화벽을 우회하여 포트 스캔 nmap -f 10.0.2.4
-sU UDP 포트 스캔 nmap -sU 10.0.2.4
-D RND:[숫자] [숫자]에 입력된 수 만큼 랜덤의 IP 주소로 스캔 대상에게 핑을 보내는 방법 nmap -D RND:10 10.0.2.4 
(랜덤한 10개의 IP 주소로 스캔 대상에게 핑 송신)