본문 바로가기

보안지식/pentest

pentest - 정보 수집하기(nmap 사용)

안녕하세요!

 

저희가 pentest 즉 시스템 해킹을 하는 데 절차가 있다는 것을 알아야 합니다.

 

1. 정보 수집

- 상대 IP에 어느 포트 번호가 열려 있는지 사이트에 뭐가 있는지 확인하는 절차입니다!

- 어찌 보면 사전 답사라고 보시면 돼요 어느 문이 열려 있는지 어디에 있는지 눈으로 보는 거죠.

 

 

 

2. 서비스 분석

- 이제 상대 IP에 뭐가 있는지 대강 알았으니 더 자세하게 들여다봅니다.

- 안에 어느 서비스가 있는지 어느 취약점이 있는지 확인하는 절차입니다.

 

 

 

 

3. exploit

- 이제 그 취약점을 가지고 본격적으로 공격을 하는 절차입니다.

- 정확힌 서버의 쉘을 가져오는 해킹이에요. 그 쉘을 얻어 온다는 이야기는 서버의 터미널을 가져온다는 겁니다.

- 저희가 리눅스 사용할 때 이용하는 터미널처럼 서버 컴퓨터에 있는 터미널을 가져오는 겁니다.

 

 

 

4. post-exploit

- 쉘을 가져왔으니 이제 안에 있는 내용을 털어내는 겁니다.

- 대표적으로 root 권한 탈취가 있죠.

- root 권한을 먹으면 시스템을 장악을 한 거나 다름없죠!

 

 

 

 

________________________________________________________________________________________________

 

이제 오늘은 정보 수집을 해보겠습니다.

 

아주 유명하고 편리한 기능 중 하나인 nmap을 이용할 겁니다.

 

즉 포트 스캔을 할 겁니다.

어떤 포트가 열려있는지 확인하는 작업입니다.

 

 

제가 전 포스팅에 실습환경을 만들었잖아요?

 

만약 안 보섰다면 실습환경을 세팅을 하고 오셔야 저랑 같은 실습을 할 수 있을 거예요!

 

 

 

자 일단 Complete 되어 있죠?

 

이 터미널이요

 

 

이 터미널을 닫지 마시고 최소화하신 다음 tryhackme 사이트에 로그인을 합니다.

그리고 위쪽에 Learn 메뉴를 누르시면 이 화면이 보이실 거예요!

 

 

Learn 배우다

 

 

 

그리고 중앙에 Search 누르시고 ignite 검색을 합니다.

 

 

ignite 무시!

 

 

그리고 저 검색된 것을 클릭하시면 join room 버튼이 보이실 거예요!

 

 

오른쪽에 초록색 버튼으로 join room 보이시죠?

 

 

그 버튼을 클릭합니다.

 

그럼 다음 화면이 보이실 거예요

 

 

원래는 join room 누르고 밑에 살짝 내려서 start machine 버튼을 눌러야만 됐었는데

 

왜인지 몰라도 join room만 눌러도 되네요!

 

 

-수정 6/20 : 원래 start machine이 있어야만 합니다! 근데 지금은 안되네요 일단 정보 수집이랑 서비스 분석은

내내 같으니 참고만 하세요!

 

일단 예시로 제 실습 IP로 해보겠습니다(공격할 IP가 아닙니다! 그냥 예시로 하는 거에요)

IP : 10.18.18.145 

 

IP주소는 인터넷상에 컴퓨터 주소라고 보시면 됩니다!

.

.

.

.

.

.

.

.

이제 본격적으로 실습 시작하겠습니다.

 

제일 먼저 정보 수집의 도구인 namp을 사용해 보겠습니다.

 

새로운 터미널을 열어 줍니다. 그리고 sudo -i 입력을 해 root 권한으로 전환합니다

칼리 리눅스 기준 왼쪽 위에 터미널 클릭 하시면 새로운 터미널이 생겨요

 

 

좋아요

 

 

이제 저희가 공격할 IP의 어느 포트 번호가 열려 있는지

즉, 어느 문이 열려 있는지 확인을 하겠습니다. 포트스캔이라고 해요

 

nmap의 사용법은 간단해요.

 

nmap [공격할 IP주소] 이거면 끝입니다!

 

해보겠습니다.

 

각 실습 IP번호는 전부 달라요!

 

보시면 80/tcp open 보이시죠?

 

80번이 열려있다는 것을 말해줍니다.

포트 번호가 포트 번호 80번이 열려있구나!

 

참고로 nmap의 작동 방식은 간단합니다.

well-known(잘 사용되는) 포트 번호에 데이터를 보내봐서 어디가 열려 있는지 확인을 합니다.

 

wireshark 도구 통해 확인할 수 있어요. 

 

한 번 보실게요! wireshark는 내가 어느 데이터를 보내는지 확인 할 수 있는 도구 중 하나입니다.

칼리 리눅스에 기본적으로 설치되어 있어요.

왼쪽 위에 칼리 리눅스 아이콘 클릭 후 wireshark 검색합니다.

 

 

상어

 

 

wireshark 프로그램 클릭 하시면 이 화면이 보이실 거예요

 

연결된 네트워크 목록이에요

 

 

그리고 저희가 실습페이지 연결한 tun0을 더블 클릭합니다.

 

 

깨끗

 

 

그리고 난 뒤에 다시 한번 더 터미널에 nmap으로 포트 스캔을 해볼게요

 

 

어우.. 눈 아파

 

이렇게 nmap이 실행을 할 때 어떻게 데이터를 보내는지 알 수 있어요

 

source는 출발지 주소이고요 Destination은 목적지 주소예요

 

그리고 info 란에 보시면

 

-> 80 보이시죠

 

-> [포트번호] 로 보냈다는 것을 의미합니다.

 

 

nmap은 무식하게 어느 포트가 열려 있는지 데이터를 막 보내봅니다.

만약 모든 포트를 보내보고 싶다면 nmap [IP 주소] -p-  이렇게 작성하시면 됩니다!

 

 

 

이제 어느 포트 번호가 열려 있는지 확인했잖아요?

 

그럼 그 포트 번호로 통해 어느 서비스 즉, 어느 프로세스가 일하고 있는지 확인할 수 있습니다.

wireshark는 이제 닫으시고 nmap 실행한 터미널로 돌아오셔서 -sV 을 붙여서 보내겠습니다.

 

nmap -sV [IP 주소]

 

이러면 그 포트에 어느 서비스 어느 버전을 쓰고 있는지 알려줍니다.

 

 

아하..

 

80번이 열려 있고 서버 버전이 Apache httpd 2.4.57 이라는 것을 알 수 있습니다.

 

이 정보는 다음 절차인 서비스 수집 할 때 유용하게 사용할 겁니다.

 

________________________________________________________________________________________________

 

이렇게 정보 수집은 마치겠습니다. 다음에는 서비스 수집을 하겠습니다!

 

nmap 을 이용할 때 좋은 기능을 알려 드리겠습니다.

바로 -script 기능입니다.

 

사용방법은 

 

nmap [IP 주소] -script [스크립트파일]

 

이 스크립트의 기능은 많은 사람들은 nmap을 이용하면서 그저 열려있는 포트번호랑 서비스뿐만 아니라

스크립트 통해 좀 더 확장된 정보를 가져오게 합니다. 

 

이 스크립트 파일은 nmap 측에서 이미 마련해 둔 파일이 있습니다.

 

한 번 보실게요

 

ls /usr/share/nmap/scripts/

 

 

꽤나 많아요!

 

 

꽤나가 아니라 엄청 많네요

 

이렇게 nmap은 이미 다양한 정보 혹은 특정 정보를 가져올 수 있게 해주는 스크립트 문들이 .nse 파일로

구비되어있습니다!

 

예시로 아무거나 하나 이용해 볼게요

 

이렇게 이용하시면 되요

 

이렇게 포트 번호뿐만 아니라 추가된 정보를 가져올 수 있습니다.

 

 

하나하나 이용할 수 있지만 스크립트들을 모아서 사용 가능한 카테고리가 있습니다.

 

 

https://nmap.org/book/nse-usage.html

 

Usage and Examples | Nmap Network Scanning

Download Reference Guide Book Docs Zenmap GUI In the Movies While NSE has a complex implementation for efficiency, it is strikingly easy to use. Simply specify -sC to enable the most common scripts. Or specify the --script option to choose your own scripts

nmap.org

 

여기 참고하시면 됩니다. 간단히 설명해 드리자면 뭔가 동일한 목적을 가진 스크립트들을 모아서 분류하고

분류된 카테고리를 사용할 수 있다는 겁니다.

 

 

저희가 알아볼 건 무난한 정보를 가져와 주고 사용 가능한 정보를 가져와 주는 -sC 기능을 볼 겁니다.

 

그저 "무난하게 내가 쓸 수 있는 정보 가져와줘"라고 명령을 하는 거예요

 

 

title이 It works 이구나

 

이렇게 이용할 수 있다는 것을 알 수 있습니다.

 

 

 

또한 이렇게 저희가 정보 수집한 것을 따로 파일에 저장해 두는 게 좋겠죠?

 

정보는 언제 사라질 줄 모르잖아요. 그러니 따로 파일 저장하는 방법도 있습니다.

 

nmap [IP주소] > [파일이름]

 

 

nmap 실행한 결과를 scan_result 파일에 저장!

 

이렇게 하시면 -sV(어느 서비스 어느 버젼인지)의 결과랑 -sC(무난한 정보) 결과가 scan_result 파일에 저장된 겁니다.

 

저장 위치는 바로 있는 위치에 저장됩니다. ls 입력하시면 어느 파일이 있는지 확인할 수 있어요

그리고 cat 문으로 파일 보면?

 

 

쨘!

 

 

이렇게 포스팅을 마치겠습니다. 이것저것 공부하고 정보 습득하느라 글이 길어졌네요!

감사합니다.

 

참고한 영상은

https://www.youtube.com/watch?v=UZXSDVjAHbY&list=PLilfVAwqeInX21KkW9JwITbY_SpGVg5qp&index=2 

여기서 봤습니다.