Nmap 으로 스캔 자동화

NmapBeginner
지금 연습하기

소개

이 랩에서는 쉘 스크립팅과 cron 스케줄링을 사용하여 Nmap 스캔을 자동화하는 방법을 배우게 됩니다. 랩은 192.168.1.1 을 대상으로 하는 Nmap SYN 스캔 명령을 포함하는 간단한 쉘 스크립트 scan.sh를 생성하는 것으로 시작합니다. 그런 다음 chmod +x scan.sh를 사용하여 스크립트를 실행 가능하게 만들고 터미널에서 실행합니다.

이 랩은 텍스트 편집기를 사용하여 여러 스캔을 포함하도록 스크립트를 확장하는 것으로 이어집니다. 마지막으로, cron 을 사용하여 스크립트가 자동으로 실행되도록 예약하고, crontab -e로 구성한 다음, Xfce 터미널에서 자동 실행을 확인합니다.

echo "nmap -sS 192.168.1.1" > scan.sh 로 스캔 스크립트 생성

이 단계에서는 Nmap 스캔을 실행하는 간단한 쉘 스크립트를 생성합니다. 이 스크립트는 나중에 더 복잡한 스캔을 자동화하기 위한 기반이 될 것입니다. echo 명령을 사용하여 Nmap 명령을 scan.sh라는 파일에 작성합니다.

먼저, echo가 무엇을 하는지 이해해 봅시다. echo 명령은 단순히 인수를 표준 출력으로 출력합니다. > 연산자를 사용하여 이 출력을 파일로 리디렉션할 수 있습니다.

우리가 사용할 Nmap 명령은 nmap -sS 192.168.1.1입니다. 자세히 살펴보겠습니다.

  • nmap: Nmap 스캐너를 실행하는 명령입니다.
  • -sS: 이 옵션은 SYN 스캔을 지정합니다. SYN 스캔은 포트를 스캔하는 은밀한 방법입니다. TCP 핸드셰이크를 완료하지 않기 때문에 "반 개방형" 스캔이라고도 합니다.
  • 192.168.1.1: 스캔하려는 대상 IP 주소입니다. 이것은 일반적인 개인 IP 주소이지만, 네트워크 구성에 따라 조정해야 할 수도 있습니다.

이제 스크립트를 생성해 보겠습니다. ~/project 디렉토리에서 터미널을 열고 (아직 열려 있지 않은 경우) 다음 명령을 실행합니다.

echo "nmap -sS 192.168.1.1" > scan.sh

이 명령은 ~/project 디렉토리에 scan.sh라는 파일을 생성하고 Nmap 명령을 작성합니다.

파일이 올바르게 생성되었는지 확인하려면 cat 명령을 사용하여 내용을 표시할 수 있습니다.

cat scan.sh

다음 출력이 표시되어야 합니다.

nmap -sS 192.168.1.1

이것은 스크립트가 올바른 Nmap 명령으로 생성되었음을 확인합니다.

chmod +x scan.sh 로 스크립트 실행 가능하게 만들기

이 단계에서는 scan.sh 스크립트를 실행 가능하게 만듭니다. 기본적으로 Linux 에서 새로 생성된 파일은 실행 권한이 없습니다. 스크립트를 실행하려면 이 권한을 명시적으로 부여해야 합니다.

chmod 명령은 파일 또는 디렉토리의 권한을 변경하는 데 사용됩니다. +x 옵션은 지정된 파일에 실행 권한을 추가합니다.

터미널에서 ~/project 디렉토리로 이동하여 (아직 이동하지 않은 경우) 다음 명령을 실행합니다.

chmod +x scan.sh

이 명령은 scan.sh 파일에 실행 권한을 추가합니다.

스크립트가 이제 실행 가능한지 확인하려면 ls -l 명령을 사용하여 파일의 권한을 나열할 수 있습니다.

ls -l scan.sh

다음과 유사한 출력이 표시되어야 합니다.

-rwxr-xr-x 1 labex labex 25 Oct 26 10:00 scan.sh

-rwxr-xr-x 문자열의 x는 파일이 이제 실행 가능함을 나타냅니다. 구체적으로, 첫 번째 rwx는 소유자의 권한 (읽기, 쓰기, 실행) 을 나타내고, 두 번째 r-x는 그룹의 권한을 나타내며, 세 번째 r-x는 다른 사용자의 권한을 나타냅니다.

이제 스크립트가 실행 가능하므로 다음 단계에서 실행할 수 있습니다.

./scan.sh 로 스크립트 실행

이 단계에서는 이전 단계에서 생성하고 실행 가능하게 만든 scan.sh 스크립트를 실행합니다.

스크립트를 실행하려면 ./ 접두사를 사용합니다. 이렇게 하면 쉘이 현재 디렉토리에 있는 스크립트를 실행하도록 지시합니다.

터미널에서 ~/project 디렉토리에 있는지 확인하고 다음 명령을 실행합니다.

./scan.sh

터미널에서 Nmap 출력을 볼 수 있습니다. 출력은 대상 호스트 (192.168.1.1) 에 연결할 수 있는지 여부와 해당 호스트에서 실행 중인 서비스에 따라 달라집니다. 대상에 연결할 수 없는 경우 "Host seems down."과 같은 메시지가 표시될 수 있습니다. 대상에 연결할 수 있는 경우 열린 포트 목록과 대상에 대한 기타 정보가 표시됩니다.

중요 참고 사항: 192.168.1.1 IP 주소는 일반적인 기본 게이트웨이 주소입니다. 이것이 네트워크의 장치에 대한 올바른 주소가 아닌 경우 스캔에서 유용한 결과가 생성되지 않을 수 있습니다. 192.168.1.1을 스캔하려는 네트워크의 장치 IP 주소로 바꿀 수 있습니다. 그러나 대상 스캔에 대한 권한이 있는지 확인하십시오. 허가 없이 네트워크를 스캔하는 것은 불법이며 비윤리적입니다.

nmap의 출력은 네트워크 및 대상에 따라 크게 달라질 수 있으므로 출력을 직접적으로 안정적으로 확인할 수 없습니다. 그러나 명령 기록을 확인하여 명령이 실행되었는지 확인할 수 있습니다.

Xfce 텍스트 편집기에서 스크립트에 여러 스캔 추가

이 단계에서는 Xfce 텍스트 편집기를 사용하여 scan.sh 스크립트에 더 많은 Nmap 스캔 명령을 추가합니다. 이렇게 하면 단일 스크립트 실행으로 여러 스캔을 수행할 수 있습니다.

먼저 Xfce 텍스트 편집기에서 scan.sh 파일을 엽니다. 데스크톱에서 마우스 오른쪽 버튼을 클릭하고 "여기에 터미널 열기"를 선택한 다음 다음 명령을 입력하여 이 작업을 수행할 수 있습니다.

nano scan.sh

그러면 scan.sh 파일이 nano 텍스트 편집기에서 열립니다.

현재 스크립트에는 다음 한 줄이 포함되어 있습니다.

nmap -sS 192.168.1.1

다른 스캔 명령을 추가해 보겠습니다. 예를 들어, 다른 호스트가 작동하는지 확인하기 위해 ping 스캔 (-sn) 을 추가할 수 있습니다.

nmap -sS 192.168.1.1
nmap -sn 192.168.1.2

원하는 만큼 많은 스캔 명령을 추가할 수 있습니다. 예를 들어, 첫 번째 대상에 버전 감지 스캔 (-sV) 을 추가해 보겠습니다.

nmap -sS -sV 192.168.1.1
nmap -sn 192.168.1.2

이제 스크립트는 먼저 192.168.1.1에서 버전 감지를 사용하여 SYN 스캔을 수행한 다음 192.168.1.2에서 ping 스캔을 수행합니다.

중요 참고 사항: 192.168.1.1192.168.1.2를 스캔하려는 네트워크의 장치 IP 주소로 바꾸고 스캔할 권한이 있는지 확인하십시오.

변경 사항을 저장하려면 Ctrl+X를 누른 다음 Y를 눌러 확인하고 Enter를 눌러 파일을 저장합니다.

이제 ./scan.sh를 사용하여 스크립트를 실행하면 추가한 모든 Nmap 명령이 실행됩니다.

crontab -e 를 사용하여 cron 으로 스캔 예약

이 단계에서는 cron을 사용하여 scan.sh 스크립트가 자동으로 실행되도록 예약합니다. cron은 Linux 와 유사한 운영 체제에서 시간 기반 작업 스케줄러입니다. 특정 시간, 날짜 또는 간격으로 명령 또는 스크립트를 실행하도록 예약할 수 있습니다.

cron으로 작업을 예약하려면 crontab 명령을 사용합니다. crontab -e 명령은 텍스트 편집기 (일반적으로 LabEx 환경에서는 nano) 에서 crontab 파일을 엽니다.

터미널에서 다음 명령을 입력합니다.

crontab -e

crontab을 처음 사용하는 경우 편집기를 선택하라는 메시지가 표시될 수 있습니다. 해당 번호를 선택하여 nano를 선택합니다.

crontab 파일에는 각 줄에 하나의 cron 작업이 있는 목록이 포함되어 있습니다. 각 줄은 6 개의 필드로 구성됩니다.

minute hour day_of_month month day_of_week command
  • minute: 작업이 실행될 시간의 분 (0-59).
  • hour: 작업이 실행될 시간의 시 (0-23).
  • day_of_month: 작업이 실행될 달의 일 (1-31).
  • month: 작업이 실행될 연도의 월 (1-12).
  • day_of_week: 작업이 실행될 요일 (0-6, 0 은 일요일).
  • command: 실행할 명령.

예를 들어, scan.sh 스크립트를 매분 실행하려면 crontab 파일에 다음 줄을 추가합니다.

* * * * * /home/labex/project/scan.sh

이 줄의 의미는 다음과 같습니다.

  • *: 매분
  • *: 매시
  • *: 매달
  • *: 매년
  • *: 매주
  • /home/labex/project/scan.sh: 실행할 명령 (스크립트의 전체 경로)

중요: 실제 시나리오에서는 네트워크와 대상 장치에 부담을 줄 수 있으므로 매분 스캔을 실행하는 것은 일반적으로 좋은 생각이 아닙니다. 이 랩의 테스트 목적으로는 매분 실행하는 것이 허용됩니다.

변경 사항을 저장하려면 Ctrl+X를 누른 다음 Y를 눌러 확인하고 Enter를 눌러 파일을 저장합니다.

"crontab: installing new crontab"과 같은 메시지가 표시되어야 합니다. 이는 cron 작업이 성공적으로 예약되었음을 의미합니다.

Cron 작업은 일반적으로 출력을 표시하지 않고 백그라운드에서 실행됩니다. scan.sh 스크립트의 출력을 보려면 파일을 리디렉션할 수 있습니다. 예를 들어, 출력을 ~/project 디렉토리의 scan.log라는 파일로 리디렉션하려면 cron 작업 항목을 다음과 같이 수정할 수 있습니다.

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

> /home/labex/project/scan.log 부분은 표준 출력을 scan.log 파일로 리디렉션하고 2>&1은 표준 오류를 동일한 파일로 리디렉션합니다.

Xfce 터미널에서 자동화 확인

이 단계에서는 cron에 의해 scan.sh 스크립트가 자동으로 실행되고 있는지 확인합니다. 스크립트를 매분 실행하도록 예약했으므로 실행 증거를 확인해야 합니다.

스크립트의 출력을 파일 (예: scan.log) 로 리디렉션한 경우 해당 파일의 내용을 확인하여 스크립트가 실행되었는지 확인할 수 있습니다. 터미널에서 다음 명령을 입력합니다.

tail /home/labex/project/scan.log

이 명령은 scan.log 파일의 마지막 몇 줄을 표시합니다. 스크립트가 올바르게 실행되고 있다면 매분 업데이트되는 Nmap 스캔의 출력을 파일에서 볼 수 있습니다.

출력을 파일로 리디렉션하지 않은 경우 scan.log 파일이 없을 것입니다. 이 경우 지금 파일을 만들고 cron 작업 출력을 리디렉션할 수 있습니다. crontab 을 다시 편집합니다.

crontab -e

그리고 cron 작업 항목을 다음과 같이 변경합니다.

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

crontab 파일을 저장합니다. 그런 다음 1~2 분 정도 기다린 후 tail /home/labex/project/scan.log를 사용하여 scan.log 파일을 다시 확인합니다.

그래도 출력이 표시되지 않으면 스크립트 또는 cron 작업에 문제가 있을 수 있습니다. 다음 사항을 다시 확인하십시오.

  • scan.sh 스크립트가 실행 가능한지 확인합니다 (chmod +x scan.sh).
  • cron 작업 항목이 crontab 파일에 올바르게 있는지 확인합니다 (crontab -l을 사용하여 cron 작업을 나열합니다).
  • cron 작업 항목에 스크립트의 전체 경로가 사용되었는지 확인합니다 (/home/labex/project/scan.sh).
  • 스크립트 자체에 오류가 있는지 확인합니다.

중요: cron 작업이 매분 실행되므로 scan.log 파일이 빠르게 커집니다. 디스크 공간이 채워지는 것을 방지하기 위해 올바르게 작동하는지 확인한 후 cron 작업을 제거하는 것이 좋습니다. crontab 파일을 편집 (crontab -e) 하고 추가한 줄을 삭제하여 cron 작업을 제거할 수 있습니다.

요약

이 랩에서는 셸 스크립트와 cron 을 사용하여 Nmap 스캔을 자동화하는 방법을 배웠습니다. 먼저, 특정 IP 주소를 대상으로 하는 Nmap SYN 스캔 명령을 포함하는 scan.sh라는 간단한 셸 스크립트를 만들었습니다. 그런 다음 chmod +x scan.sh를 사용하여 스크립트를 실행 가능하게 만들었으며, 이를 통해 터미널에서 직접 실행할 수 있었습니다.

다음으로, 텍스트 편집기를 사용하여 여러 스캔을 포함하도록 스크립트를 확장했습니다. 마지막으로, crontab -e를 사용하여 cron 작업을 구성하고 Xfce 터미널에서 자동화를 확인하여 cron 을 사용하여 스크립트가 자동으로 실행되도록 예약했습니다. 이를 통해 정기적인 모니터링 또는 보안 평가를 위해 네트워크 스캔 작업을 자동화하는 방법을 보여주었습니다.