NMAP
해킹계의 일루미나티
해킹에 대해서 알아보다 보면 일루미나티를 만날 수 있다. 정확히 말하면, 처음 보면 일루미나티로 오해 할만한 NMAP이라고 하는 프로그램을 만날 수 있다. 이번 글에서는 이 NMAP이 도대체 뭘하는 프로그램이며, 왜 일루미나티가 되었는지 알아보자.
NMAP이 하는 일
NMAP이 하는 일은 명확하다. 우리가 일상생활에서 보는
https://www.logicae.kr/이런 링크를 이용하여 서버의 다양한 정보를 알려주는 것이다. 그렇다면 과연 이런 정보는 어떻게 가져오는 것일까? 크게 보자면 NMAP의 실행 과정은 다음과 같다.
이제부터는 좀 더 세부적으로 들어가 보도록 하겠다.
Host Discovery
이 단계에서는 호스트, 즉 서버를 돌리고 있는 컴퓨터의 IP를 알아보고, 해당 IP를 가진 기기가 현재 네트워크에 살아있는지를 확인하는 단계이다. IP라는 단어를 들으면 전문 해커가 이걸 가지고 서버를 해킹하는 걸 생각할 수도 있지만(내가 그랬다.), 사실은 IP를 얻는 것은 생각보다 쉽다. 그 방법을 알기 전에 컴퓨터에 대해 좀 알고 있는 사람이라면 명령 프롬프트, 일명 cmd를 건드려본 적이 있을 것이다. 서버의 IP를 얻기 위해서는 단순히 이 cmd에
nslookup [서버 주소]와 같이 쓰면 된다. 예시로 logicae 서버의 IP를 얻어보면 이런 결과가 나온다.
C:\Users\********>nslookup www.logicae.kr
서버: kns.kornet.net
Address: ********
권한 없는 응답:
이름: www.logicae.kr
Address: 59.13.7.134NMAP은 이 과정을 자동으로 해주기 때문에 굳이 우리가 이렇게 직접 IP를 얻을 필요는 없지만 설명해 보았다. 아무튼 NMAP은 이렇게 얻은 IP를 다음 단계에서 포트와 연계하여 본격적으로 서버의 정보를 얻는 데에 사용한다.
Port Scanning
본격적인 내용에 앞서, 포트가 무엇일까? 포트는 어떤 프로그램(서비스)이 데이터를 받을지 구분하는 번호다. 즉, 이 포트에 데이터를 주고 돌아오는 값을 역추척하면 어떤 프로그램(서비스)이 돌아가고 있는지 알 수 있다는 것이다. 또한 프로그램이 실행되고 있어 데이터를 받는 포트를 열린 포트, 그렇지 않은 포트를 닫힌 포트라고 한다.
당연하게도 포트는 모든 프로그램을 구분해야하기 때문에 굉장히 많이 있다. 물론 NMAP은 그 모든 포트가 열렸는지를 이븐하게 다 확인해주는 기능도 있지만,

이는 매우 비효율적이고 시간이 오래 걸린다. 그래서 NMAP은 서버를 돌리는데 있어 자주 쓰이는 포트만 따로 열려있는지 확인하는 기능을 가지고 있다. 대표적으로 쓰이는 포트의 예시는 다음과 같다.
| 서비스 | 포트 번호 |
|---|---|
| 웹 서버 | 80 / 443 |
| 서버 접속 (SSH) | 22 |
| DNS | 53 |
그렇다면 포트가 열렸는지 확인하는 방법이 뭘까? 그 과정은 넓게는 패킷이라고 하는 것을 사용한다. 여기서 패킷이란, 네트워크를 통해 전송되는 데이터의 작은 단위이다. 이 연결되는 과정에서 그 포트가 열렸는지를 확인하는 방법은 크게 3가지가 있다.
1 . TCP Connect 방식
이 방법은 단순히 서버와 나를 실제로 연결 해 보고 열렸는지를 확인하는 방법이다. 일반적으로 OS가 이를 대체하여서 우리는 무슨 일이 일어나는지 알 수 없지만, NMAP은 이를 대신 수행함으로써 포트의 열림 유무를 알아낸다. 하지만 이 방법은 우리가 평소에 서버에 접속하는 방법과 동일하기 때문에, 서버를 스캔한다는 사실을 하나도 빠짐없이 로그에 남긴다.
2 . TCP SYN 방식
앞서 설명한 방식의 문제점을 보완하는 방법이 바로 이 방법이다. 여기서는 RAW 패킷이라고 불리는 조작된 패킷을 사용한다. 원래는 서버에 연결 요청 후 연결 성공 시 연결 되었음을 서버에 알려야 하지만, 서버에 연결 성공을 알리는 대신 연결을 끊으라는 신호는 보내버리는 패킷이다. 이 방법을 쓰면 서버는 연결 되었다는 신호를 보냈더니 연결을 끊으라는 신호를 받는 상황이 되어 연결 실패로 간주한다. 이 방법은 과거에는 로그를 남기지 않아서 스텔스 스캔으로 불렸지만, 요즘에는 이 방법도 로그에 남긴다. 이 방법은 앞선 방법보다 빠르지만 연결이 불안정하여 오류의 가능성이 있다.
3 . UDP 방식
이 방식은 2번째 방법보다 더 나아가서 연결 지향형이 아니기 때문에 응답이 없으면 포트가 열린 것인지, 패킷이 유실된 것인지 판단하기 어렵다. 스캔 속도가 매우 느리고 정확도가 떨어진다.
| 탐지 방식 | 속도 | 로그 기록 여부 | 정확도(안정성) |
|---|---|---|---|
| TCP Connect | 빠름 | 잘 남음 | 높음 |
| TCP SYN | 매우 빠름 | 남음 | 낮음 |
| UDP | 느림 | 남음 | 낮음 |
Service Detection
이 과정은 서버와 데이터를 주고 받아야 해서 서버와의 연결이 필요하므로 TCP Connect 방식에서만 사용된다. 즉, 서버에 로그를 많이 남겨서 '여기 사람 있어요'하는 꼴이 될 수 있어서 사용 시 주의해야 한다. 과정의 이름 그대로, NMAP은 여기서 하는 일은 서버 프로그램(서비스)의 특성을 분석하는 것이다. 이를 위해 NMAP은 열린 포트에 연결하여 통신 프로토콜을 전송한다. 그러면 서버는 프로토콜 배너를 반환해 주는데, 여기에는 서버 프로그램의 종류와 버전을 알 수 있다.
OS Detection
사용중인 OS를 서버가 알려주는 경우는 드물다. 대신, NMAP은 OS마다 다른 응답을 하는 것을 이용하여 OS가 무엇인지 탐색한다. 탐색은 크게 Active Fingerprinting과 Passive Fingerprinting으로 나뉘고, 탐색 시에 사용하는 정보에는 TTL, TCP Window Size, TCP Option Order, DF Flag, ICMP 응답 형태, 비정상 패킷에 대한 반응 등을 이용한다.
Active Fingerprinting
탐색의 방법에는 크게 2가지가 있다고 하였는데, 여기서는 Active Figerprinting을 먼저 설명하도록 하겠다. 이름에서도 알 수 있듯이, Active Fingerprinting은 서버에 직접 연결하여 서버로부터 정보를 얻는 방식이다. 그래서 TCP Connect처럼 서버에 로그를 많이 남기지만 원하는 정보를 다 가져올 수 있는 방법이다.
Passive Fingerprinting
다음으로는 Passive Fingerprinting이다. Active Fingerprinting과는 달리, 서버에 연결하지 않고 외부에서 연결하여 주고 받는 데이터를 가로채서 그 정보를 분석한다. 이 방법은 서버에 거의 로그를 잘 남기지 않는 방법이며, 당연히 서버에 오가는 정보만 확인 할 수 있어 정보의 양이 제한적이다.
| 탐지 방식 | 속도 | 로그 기록 여부 | 정보의 양 |
|---|---|---|---|
| Active Fingerprinting | 빠름 | 남음 | 많음 |
| Passive Fingerprinting | 느림 | 덜 남음 | 적음 |
OS 식별 시에 사용하는 데이터
서버에 오가는 데이터에는 다양한 정보들이 있는데 그 중에는 작동중인 OS에 따라 값이 달라지는 정보도 존재한다. NMAP은 이를 분석하여 OS를 식별하는데에 사용하는데, 아래는 이 과정에서 NMAP이 사용하는 정보들이다. 당연히, 데이터를 주고 받으며 정보를 얻는 과정은 Active Fingerprinting에서만 쓰일 수 있다.
무한히 순환하지 않도록
설정된 '생존 시간(거쳐갈 수 있는 라우터의 수)'을 의미
있는 데이터의 최대 크기를
의미
것을 방지하는 옵션의 켜짐
여부
상태에서 작동하는 프로토콜로, OS를 판단할 수 있는 다양한 정보 내장
동시 요청)의 패킷을 보냈을 때 무시, 리셋 등 OS 고유의 반응 패턴을 분석
Script Engine
이 단계에서 NMAP은 실제로 존재하는 취약점이나 보안 설정을 검사한다. 다음은 NMAP이 어떤 항목들을 검사하는지에 대한 내용이다.
- SSL / TLS는 암호화하는 알고리즘인데, 이를 과거 버전에서 업데이트를 하지 않았다면, 취약점이 될 수 있다.
- 서버 계정의 기본 비밀번호를 바꾸지 않고 두었다면, 이곳이 취약점이 되어 서버의 관리자 권한이 탈취할 가능성이 생긴다.
Output Engine
지금까지 얻은 정보를 출력해준다. (그렇다. 내용 쓰기 귀찮았다.)

결론
지금까지 NMAP에 대해서 알아보았다. 하지만 우리에게는 아직 풀리지 않는 의문이 있다. 과연 NMAP은 왜 일루미나티 로고를 사용하고 있는가이다. NMAP 제작자의 말에 따르면, 이 프로그램은 서버를 감시하는 역할을 수행하기 때문에 눈을 로고로 사용했다고 한다. 하지만 솔직히 말하자면, 이건 다 포장일 뿐이고 사실 제작자가 일루미나티 신봉자인 것이 맞는 듯 하다.

이 이야기는 위험할 수 있으므로 진짜 결론을 내자면, 앞에서 몇번 언급했듯이 서버의 업데이트 잘 하는 것만으로도 다양한 취약점을 없애고 해킹의 위협에서 벗어날 수 있다.
후기
처음으로 logicae에 쓰는 글이라 다양한 기능을 써보고 싶어서 좀 난잡해진 느낌이 있다. 난잡한 부분이 눈에 띄거나 미흡한 점이 보인다면 댓글에 남겨주면 참고하겠다.
Comments ()