이제 시작이야 해킹과 침투테스트 (3)

3장

스캐닝

1단계 탐색에서는 IP주소만을 목록화하는 것이다. 이제 2단계에서는 이 IP주소를 가지고 , 각 주소에 어떤 포트가 열려 있는지 그리고 어떤 서비스가 실행되고 있는지 확인할 것이다.
3장의 모든 예는 칼리 리눅스ㅔ서 운도우 xp나 metasploitable VM을 대상으로 실행되는 것이다. 이 책의 숙제는 Metasploitable VM을 성공적으로 해킹하여 시스템을 장악하는 것이다.

2단계를 다음 네 가지의 과정으로 재차 분류할 것이다.

2-1. 핑 패킷으로 컴퓨터가 작동 중인지 확인.
2-2. Nmap을 통한 포트 스캐닝
2-3. NSE을 활용하여 대상에 대한 정보 추가로 획득
2-4. Nessus를 통한 취약점 스캐닝

어느 정도 숙련이 되고 나면 2-1과 2-2를 별도로 진행하지 앟고 Nmap으로 한번 진행하게 될 것이다.
과정 2-2는 특정 컴퓨터에서 어떤 포트가 열려 있는지 그리고 어떤 서비스가 실행 중인지 확인하는 과정이다.
간단히 설명하자면 포트는 소프트웨어, 서비스,네트워크가 컴퓨터와 같은 하드웨어와 통신할 수 있게 해주는 수단이다.
과정 2-3은 NSE를 활용하여 앞에서 발견한 내용을 확인하고, 추가로 정보도 획득한다. NSE는 Nmap의 기능을 확장시켜준다. NSE로 직접 스크립트를 만들어서 결과값에 대해 확인하거나 새로운 취약점을 검색하거나 아니면 여러 해킹기법을 자동화 할 수 있다.
과정 2-4는 취약점 스캐닝이다. 이미 알려져 있는 취약점을 발견하는 것은 로또 확률이다.

해킹에 성공한 컴퓨터를 사용하여 다른 컴퓨터를 공격하는 것을 pivoting이라고 한다.
최종 목적지에 다다르기 위해 pivoting을 여러번 헤야 할 수 있다. 처음에는 외부 네트워크와 연결되어 있는 장비를 먼저 공략하고 , 점차 내부에 있는 장비를 공략하는 것이다.

Fping : 핑과 핑 스윕

핑은 ICMP패킷이라고 불리는 특수 네트워크 패킷의 일종이다. 핑은 ICMP 반향 요청 패킷이라는 특수한 네트워크 트래픽을 컴퓨터나 네트워크 장비에 전송한다.

ping target_ip

어떤 운영체제를 사용하는지에 따라 약간 다르기는 하지만 대상 컴퓨터가 꺼져 있거나 아니면 ICMP 패킷을 차단하고 있으면 "Destination Host Unreachable" 이라는 메시지가 결과값으로 보일 것이다.

여기서 여러 IP에 핑을 전송할 경우 비효율적이다. 그래서 핑 스윕을 사용할 수 있게 해주는 다양한 툴이 있다. 그 중 하나가 Fping 이다.

fping -a -g 172.16.45.1 172.16.45.254>hosts.txt

-a는 작동하고 있는 장비만 결과값에 나타나도록 하는 것.
-g는 검사하고 싶은 IP주소의 범위 설정.

포트스캐닝

모든 컴퓨터에는 6만5천여개의 포트가 있다. 포트를 사용하고 있느 서비스의 종류에 따라 또는 통신 종류에 따라 포트는 TCP가 될 수 있고, UDP가 될 수 있다. 가장 효율적인 포트 스캐닝 툴은 Nmap 이다.

3방향 핸드쉐이크

특정 네트워크에서 두 대의 컴퓨터가 TCP 프로토콜로 통신하려면 먼저 3망향 핸드쉐이크를 하여야한다. 첫번째 컴퓨터는 두 번째 컴퓨터의 특정 포트로 SYN 패킷을 보낸다. 만약에 두 번째 컴퓨터가 리스닝 하고 있다면 SYN/ACK으로 응답한다. 첫번째 컴퓨터가 SYN/ACK을 받으면 ACK 패킷을 다시 두 번째 컴퓨터에 전송한다. 이 과정은 전화 통화와 비슷하다.

Nmap - TCP 커넥트 스캔

이 스캔은 실제로 3방향 핸드쉐이크를 완룔하고 바로 연결을 해지하기 때문에 대상 컴퓨터에 부하가 걸려 컴퓨터가 멈추는 경우는 매우 드물다.

nmap -sT -p- -Pn target_ip

-p-는 모든 포트를 스캔
-Pn을 사용하지 않으면, 포트 스캔을 하기전에 직접 어떤 컴퓨터가 작동중인지 먼저 확인하게 된다. 따라서 보안 설정 때문에 응답을 하지 않은 컴퓨터는 Nmap이 포트 스캔을 하지 않고 건너 뛰게 되는 것이다. 그렇기 때문에 -Pn 을 사용하면 놓칠 뻔했던 컴퓨터와 포트를 발견할 수 있다.
-sT는 TCP 커넥트 스캔을 실행하라고 지시

nmap -sT -p- -Pn 192.168.18.1-254

1부터 254 사이에 있는 모든 IP 주소를 스캔

만약 IP 주소가 연속적이지 않고 여러 대의 컴퓨터를 스캔해야 할 떄에는 텍스트 파일을 하나 만들어서 스캔할 IP 주소를 한 줄에 적어 놓는다. Nmap 명령어 뒤에 "-iL 테스트 파일 경로 " 추가

Nmap - SYN 스캔

SYN 스캔이 가장 많이 사용된다. SYN 스캔은 TCP 커넥트 스캔보다 속도가 빠르고 대상 컴퓨터에 부하를 많이 주지 않아서 의도하지 않게 대상 컴퓨터에 DoS 공격을 할 가능성도 적다. 빠른 이유는 3방향 핸드쉐이크에 있는 3단계를 모두하지 않고 2단계만 진행하기 때문이다. 또 다른 이점은 어느 수준의 은밀성을 유지하는 데 도움이 된다는 것이다.

namp -sS -p- -Pn target_ip

T는 TCP 커넥트 스캔이도 S는 SYN 스캔을 뜻한다.

nmap - UDP 스캔

TCP 커넥트 스캔과 SYN 스캔은 모두 TCP 프로토콜을 기반으로 동작한다.
컴퓨터는 TCP 나 UDP로 통신할 수 있지만 , 이 두 가지는 매우 다른 프로토콜이다.
TCP는 연결 지향 프로토콜이므로 한 컴퓨터에서 보낸 패킷이 다른 컴퓨터에서 받았을 때 패킷이 손실되거나 순서가 바꾸지 않도록 해준다. 그에 반해 UDP는 비연결 지향성이다. 컴퓨터는 패킷이 다른 컴퓨터에 제대로 도착했는지 도착하지 못했는지 확인하지 않고 단순히 패킷마 전송한다.
모든 서비스가 TCP 프로토콜을 이용하는 것은 아니다. DHCP, DNS,SNMP,TFTP 등을 포함하여 많은 중요한 서비스가 UDP 프로토콜을 사용하고 있다.

nmap -sU target-ip

UDP 스캔은 매우 느리기 때문에 가장 기본적인 UDP 스캔을 기본 1000개 포트를 대상으로 스캔하는 것도 많은 시간이 소모된다.
UDP 통신은 응답자로부터 응답을 받을 필요가 없다. 그렇다면 열려있는 포트와 차단된 포트를 구별할까?
많은 사람들은 열린/차단 이라는 값을 UDP 결과가 보이기 때문에 UDP 스캔을 간과하는 경향이 있지만, UDP 스캔에 -sV 은 버전 스캔닝에 사용되지만 , 결과값을 좀 더 명확하게 만드는데 도움이 된다.
버전 스캐닝이 활성화 되어 있으면 특수제작된 패킷을 전송하여 추가적인 조사를 하여 서비스를 식별하려고 한다.

nmap -sUV target_ip

Nmap - 크리스마스 트리 스캔

컴퓨터 세계에서는 RFC라는 문서가 있는데 특정한 기술이나 표준에 대한 기술적인 내용이나 주의사항이 적혀있다. 또한 RFC에는 특정 시스템이 내부에서는 어떻게 동작하고 있는지에 대해 상세한 내용이 적혀있다. 그러므로 공격자들은 이 문서를 보고 시스템의 허점을 찾아보기도 한다. 크리스마스 트리 스캔과 널 스캔이 바로 이러한 허점을 이용한 공격이다. 이 스캔은  FIN,PSH,URG 패킷의 플래그가 온으로 설정되어 있는 것에서 그 이름을 유래했다. 하지만 ACK나 SYN 플래그가 설정되어 있지 않다.
 RFC에서 명시하길, 닫혀진 포트가 SYN, ACK, RST 플래그가 설정되어 있지 않은 패킷을 전송 받게 되면 포트는 RST 패킷을 보내어 응답하게 된다. 또한 만약 포트가 열려있으면 포트는 SYN, ACK, RST 플래그가 설정되어 있지 않은 패킷은 무시하도록 되어 있다.
 만약 대상의 운영체제가 TCP RFC를 100프로 준수하고 있다면, Nmap은 대상 컴퓨터에 연결을 시작하거나 설정할 필요없이 포트의 상태를 확인 할 수 있다.

nmap -sX -p- -Pn target_ip

Nmap - 널 스캔

널 스캔은 크리스마스 트리 스캔과 마찬가지로 TCP 통신에서 자주 사용하지 않는 패킷을 활용한다. 널 스캐은 플래그가 결여된 패킷을 활용하기 때문에 크리스마스 트리 스캔과 정반대일 수 있다. 대상 컴퓨터에 열려있는 포트는 nmap에 아무런 응답을 하지 않고, 닫혀진 포트는 RST 패킷으로 응답하게 된다.
 두 개의 스캔의 이점은 단순한 필터와 접근통제목록을 우회할 수 있다는 것이다. 원시적 필처는 SYN패킷을 차단함으로써 작동한다. 이 필터를 이용하는 이유는 SYN 패킷이 컴퓨터로 유입되는 것을 차단하면 3방향쉐이크가 성립될 수 없다는 생각에거이다. 만약 3방향쉐이크가 성립되지 않으면 컴퓨터 사이에서의 TCP 통신은 불가능해진다. 크리스마스 트리나 널 스캔은 통신하려고 시도하는 것이 아니라 단순히 포트가 열려있는지 확인하는 것이다.

nmap -sN -p- -Pn target_ip

Nmap Scripting  Engine : 애벌레에서 나비로

NSE로 기존의 포트 스캐닝 작업 이외에 많은 작업을 추가로 할 수 있게 된다.

nmap --script banner target_ip

banner 스크립트는 TCP 포트로 연결하여 대상 컴퓨터에서 전송하는 모든 결고값을 로컬 터미널에서 보여준다.
--script 는 항목 전체를 호출하여 사용 할 수도 있다.

nmap --script vuln target_ip

vuln 은 대상 컴퓨터에 이미 알려진 취약점이 있는지 확인하며 보통 취약점이 발견되었을 때만 메시지를 보여준다.

포트 스캐닝 정리

-sV는 버전 스캐닝으로 리스닝하고 있는 서비스에서 보다 많은 정보를 얻기 위해 열러있는 포트를 추가적으로 조사하게 된다.
-T는 속도를 조절 할 수 있는 옵션이다. 0이 가장 느린 것이고 5가 가장 빠르다.
-o 옵션은 대상의 운영체제를 확인할 수 있다.

취약점 스캐닝

원격 코드 실행은 공격자나 침투테스터가 원격에 있는 컴퓨터를 와전히 장학하여 마치 실제로 대상 컴퓨터 앞에서 명령어를 입력하는 것처럼 해준다.
훌륭한 스캐너들이 많지만 여기서는 Nessus를 사용할 것이다. Nessus의 핵심 구성요소 중 하나는 바로 플러그인이다. 플러그인은 알려진 취약점을 확인하기 위해 Nessus가 대상 컴퓨터로 전송하는 작은 블럭이다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리