
Linux용 네트워크, 정찰 및 공격적 보안 도구.
Hawk는 제가 한 도구에서 다른 도구로 옮겨 다니는 대신 동일한 스위트를 사용하여 다양한 종류의 작업을 수행할 수 있도록 개발한 네트워크 및 침투 테스트 유틸리티입니다.
현재 이 스크립트는 ifconfig, ping, traceroute, 포트 스캔(SYN, TCP, UDP, ACK, 종합 스캔, 호스트 검색(로컬 네트워크에서 작동 중인 장치 스캔), MAC 주소 감지(로컬 네트워크에서 호스트 IP의 MAC 주소 가져오기), 배너 그래빙, DNS 확인(지리적 위치 정보 포함), WHOIS, 하위 도메인 열거, 취약점 정찰, 패킷 스니핑, MAC 스푸핑, IP 스푸핑, SYN 플러딩, deauth 공격 및 무차별 대입 공격(베타) 등 다양한 작업을 수행할 수 있습니다.
다른 기능들은 아직 구현 중입니다. 향후 구현에는 WAF 탐지, DNS 열거, 트래픽 분석, XSS 취약점 스캐너, ARP 캐시 중독, DNS 캐시 중독, MAC 플러딩, 죽음의 핑, 네트워크 연결 해제 공격(deauth 공격이 아님), OSINT, 이메일 스푸핑, 익스플로잇, 일부 자동화 작업 등이 포함될 수 있습니다.

참고: 현재 이 스크립트는 Linux에서만 제대로 실행됩니다. Windows나 macOS에서 시도하면 실행될 수는 있지만 수많은 오류가 나타날 것입니다.
이 스크립트는 다음에서 테스트되었습니다:
스크립트가 문제없이 실행되도록 필요한 패키지를 설치하려면 루트 권한으로 setup.sh 스크립트를 실행하기만 하면 됩니다. 현재 이 설치 스크립트는 각각 apt, dnf, pacman 패키지 관리자를 사용하는 Debian, Red Hat, Arch 기반 배포판에서만 지원됩니다(Ubuntu, Kali Linux, Parrot OS, Debian, Pop!_OS, Linux Mint, Deepin, Zorin OS, MX Linux, Elementary OS, Fedora, CentOS, Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, Oracle Linux, ClearOS, Arch, Black Arch, Manjaro 등). 대부분의 시스템에서 Hawk를 설치하려면 다음 명령을 실행하기만 하면 됩니다:
git clone https://github.com/medpaf/hawk.git
cd hawk
sudo sh setup.sh
그런 다음 안내에 따라 진행하면 됩니다. 설치 중 나타나는 오류 메시지는 무시하세요.
하지만 다른 패키지 관리자를 사용하는 다른 Linux 배포판을 사용 중이라면 해당 배포판의 패키지 관리자를 사용하여 패키지를 수동으로 설치하세요. 사용 중인 특정 배포판에 따라 이 스크립트를 실행하는 데 필요한 패키지 중 일부가 이미 설치되어 있을 수도 있습니다. 필요한 패키지를 확인하려면 setup.sh 파일을 살펴보세요.
설치가 끝난 후 프로그램을 실행하려면 프로젝트 디렉터리로 이동한 다음 python으로 hawk.py 파일을 실행하기만 하면 됩니다. 성능 향상과 권한 오류를 피하기 위해 루트로 스크립트를 실행하는 것이 좋습니다. 사용되는 명령은 다음과 같습니다:
sudo python3 hawk.py
구성을 변경하려면 files/conf.py에 있는 구성 파일로 이동하여 편집하면 됩니다.
시스템의 현재 TCP/IP 네트워크 구성을 표시하려면 다음 명령을 입력하세요:
-ifconfig

연결 상태를 확인하기 위해 하나 이상의 호스트에 ICMP 패킷을 보내려면 다음과 같이 입력하세요:
-ping <HOST(s) IP/FQDN>

경로를 진단하고 전송 지연을 측정하려면 -traceroute 명령을 사용하세요:
-traceroute <HOST IP/FQDN>

포트 스캔은 네트워크에 연결된 호스트와 실행 중인 서비스를 식별하여 잠재적인 보안 침해를 감지하는 데 도움이 됩니다.
TCP SYN(-scansyn) [스텔스 스캔이라고도 함], TCP Connect(-scantcp), UDP(-scanudp), TCP ACK(-scanack), 종합 스캔(-scan) 등 여러 스캔 유형이 지원됩니다.
-scan -host <HOST(s) IP/FQDN>
-scan -host <HOST(s) IP/FQDN> -p <PORT(s)>
IP 범위 및/또는 포트 범위를 스캔하려면 다음 명령 중 하나를 사용하세요:
-scan -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-scan -iprange <START IP> <END IP> -p <PORT(s)>
-scan -iprange <START IP> <END IP> -prange <START PORT> <END PORT>

이 스캔 후 22(SSH) 및 80(HTTP) 포트가 모두 열려 있음을 확인할 수 있습니다.
주어진 네트워크에서 현재 작동 중인 장치를 찾으려면 다음 명령을 입력하세요:
-scanlan
그런 다음 스캔하려는 네트워크를 입력하세요.

LAN에서 하나 이상의 활성 호스트의 MAC 주소를 얻으려면 다음 명령을 사용하세요:
-getmac -host <HOST(s) IP>

버전 감지, 즉 배너 그래빙은 소프트웨어 배너 정보를 수집하는 정찰 기술입니다. 이 배너에는 일반적으로 네트워크 서비스에 대한 중요한 정보가 포함되며, 여기에는 소프트웨어 이름과 버전이 포함되지만 이에 국한되지 않습니다. FTP, 웹, SSH 및 SMTP 서버는 종종 배너에서 실행 중인 소프트웨어에 대한 중요한 정보를 노출합니다.
배너 공격은 일반적으로 열린 포트를 찾기 위한 열거 스캔으로 시작됩니다. 공격 대상 서비스를 식별한 후 특정 패킷을 보내고 지정된 정보를 위해 트래픽을 검사할 수 있습니다.
배너 그래빙을 수행하려면 특정 요구 사항에 따라 다음 명령 중 하나를 입력하세요:
-grab -host <HOST(s) IP/FQDN> -p <PORT(s)>
-grab -iprange <START IP> <END IP> -prange <START PORT> <END PORT>
-grab -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-grab -iprange <START IP> <END IP> -p <PORT(s)>

이 기능은 UNIX 시스템에서 사용되는 잘 알려진 nslookup 명령과 유사합니다. DNS 확인을 수행하려면 다음을 입력하세요:
-ns <HOST(s) IP/FQDN>

고지 사항: 이 기능은 IPinfo API를 사용합니다. 제공된 키는 다른 사람들이 사용하고 있을 수 있으므로 API 키를 본인 것으로 변경하는 것이 좋습니다. API 키를 변경하려면 files/conf.py의 구성 파일로 이동하세요.
WHOIS는 연락처 및 DNS 정보를 조회하기 위한 TCP 프로토콜입니다. 하나 이상의 페이지에 대한 WHOIS를 요청하려면 다음을 입력하세요:
-whois <HOST(s) IP/PQDN>

하위 도메인 열거는 하나 이상의 도메인에 대한 유효한 하위 도메인을 찾는 과정입니다.
하위 도메인 열거는 보안 평가 범위에 속하는 많은 도메인/하위 도메인을 드러낼 수 있으며, 이는 취약점을 발견할 가능성을 높입니다.
도메인의 일반적인 하위 도메인을 찾으려면 다음과 같이 입력하세요:
-sdenum <PQDN>
이 명령은 하위 도메인을 찾기 위해 기본 워드리스트를 사용합니다. 그러나 자신만의 워드리스트를 사용하려면 다음을 입력하세요:
-sdenum <PQDN> -wordlist <WORDLIST PATH>

디렉터리 버스팅은 웹 서버 내에서 디렉터리를 찾는 과정입니다.
이 작업을 수행하려면 다음을 입력하세요:
-dirbust <HOST IP/FQDN>
이 명령은 하위 도메인을 찾기 위해 기본 워드리스트를 사용합니다. 그러나 자신만의 워드리스트를 사용하려면 다음을 입력하세요:
-dirbust <HOST IP/FQDN> -wordlist <WORDLIST PATH>

하나 이상의 호스트에서 취약점을 스캔하려면 다음 명령을 사용하세요:
-vulnscan -host <HOST(s) IP/FQDN>

고지 사항: 이 기능은 Shodan API를 사용합니다. 제공된 키는 다른 사람들이 사용하고 있을 수 있으므로 API 키를 본인 것으로 변경하는 것이 좋습니다. API 키를 변경하려면 files/conf.py의 구성 파일로 이동하세요.
패킷 스니핑을 수행하려면 다음을 입력하세요:
-sniff

고지 사항: 네트워크를 통과하는 모든 데이터를 스니핑하려면 먼저 무선 카드 또는 어댑터를 모니터 모드로 전환하세요.
MAC 스푸핑은 전송 NIC의 주소와 다른 MAC 주소로 프레임을 생성하는 것입니다. 인터페이스의 MAC 주소를 변경하려면 다음 명령을 입력하세요:
-macspoof -source <SOURCE MAC> -iface <INTERFACE>

아래 스크린샷에서 볼 수 있듯이 인터페이스의 MAC 주소가 성공적으로 변경되었습니다.

IP 스푸핑의 목적은 패킷이 전달되는 시스템이 송신자를 올바르게 식별할 수 없도록 원래의 소스 IP 주소를 변조하는 것입니다.
이 명령은 패치되지 않은 취약점이 있는 시스템에서만 작동합니다. 호스트의 특정 포트에 대해 IP 스푸핑을 수행하려면 다음 명령을 사용하세요:
-ipspoof -source <SOURCE IP> <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
임의의 소스 IP를 사용하려면 다음 명령을 입력하세요:
-ipspoof -source r <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
임의의 소스 포트를 사용할 수도 있습니다:
-ipspoof -source <SOURCE IP> r -target <TARGET IP/FQDN> <TARGET PORT>

고지 사항: 테스트 목적으로만 사용하고 자신의 시스템만 대상으로 하세요.
SYN 플러드는 전송 계층(4계층)에 직접적인 오버헤드를 유발하고 응용 계층(7계층)에 간접적인 오버헤드를 유발하는 DDoS 공격 방법입니다.
SYN 플러딩을 시도하려면 다음을 입력하세요:
-synflood -source <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
임의의 소스 포트를 사용하려면 다음 명령을 입력하세요:
-synflood -source r -target <TARGET IP/FQDN> <TARGET PORT>

고지 사항: 테스트 목적으로만 사용하고 자신의 시스템만 대상으로 하세요.
Deauth 공격은 라우터와 해당 라우터에 연결된 하나 이상의 장치 간의 통신을 대상으로 하는 무선 공격 유형입니다. 효과적으로 대상 머신을 액세스 포인트에서 강제로 연결 해제시킵니다.
이 공격을 수행하려면 다음 명령을 사용하세요:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface <INTERFACE>
게이트웨이의 모든 클라이언트를 공격하려면 다음을 입력하세요:
-deauth -target a -gateway <GATEWAY MAC> -iface <INTERFACE>
기본 무선 인터페이스(files/conf.py에 설정)를 선택하여 공격을 수행할 수도 있습니다:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface d

위 스크린샷에서 명령을 실행한 후 해당 액세스 포인트에 연결된 모든 장치가 연결이 끊어졌으며 이 스크립트가 실행되는 동안 다시 연결할 수 없었습니다.
고지 사항: 이 공격을 수행하려면 모니터 모드를 지원하는 무선 카드 또는 어댑터가 있는지 확인하고 deauth 공격을 시도하기 전에 켜세요. 테스트 목적으로만 사용하고 자신의 시스템만 대상으로 하세요.
무차별 대입 공격은 암호나 사용자 이름을 풀기 위한 시도입니다.
무차별 대입 공격을 수행하여 일반적이거나 취약한 자격 증명을 찾으려면 다음을 입력하세요:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME>
사용자 정의 워드리스트를 사용하려면 다음 명령을 사용하세요:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME> -wordlist <WORDLIST PATH>
현재로서는 SSH 서비스만 지원됩니다.
고지 사항: 대상 서버에는 이러한 유형의 공격에 대한 방어 메커니즘이 있어 공격자의 암호 추측 시도를 차단할 수 있습니다. 테스트 목적으로만 사용하고 자신의 시스템만 대상으로 하세요.
이 명령은 이 스크립트에서 사용할 수 있는 일부 정찰 기술을 자동화합니다. 이 작업을 수행하려면 다음을 입력하세요:
-autoscan <HOST(s) IP/FQDN>
대부분의 무선 사용자는 무선 카드를 AP에 연결되는 스테이션으로만 사용합니다. 관리 모드에서 무선 카드와 드라이버 소프트웨어는 관리 모드의 로컬 AP에 의존하여 무선 네트워크에 대한 연결을 제공합니다.
일부 무선 카드는 모니터 모드 기능도 지원합니다. 모니터 모드로 구성하면 무선 카드가 데이터 전송을 중지하고 현재 구성된 채널을 스니핑하여 관찰된 모든 패킷 내용을 호스트 운영 체제에 보고합니다.
인터페이스를 모니터 모드로 전환하려면 다음 명령을 사용하세요:
-mode monitor -iface <INTERFACE>
인터페이스를 기본 무선 인터페이스(files/conf.py에 설정)로 설정할 수도 있습니다:
-mode monitor -iface d

아래 스크린샷에서 볼 수 있듯이 인터페이스 모드가 성공적으로 변경되었습니다.

하지만 인터페이스를 다시 관리 모드로 전환하려면 다음을 입력하세요:
-mode managed -iface <INTERFACE>
인터페이스를 기본 무선 인터페이스(files/conf.py에 설정)로 설정할 수도 있습니다:
-mode managed -iface d

아래 스크린샷에서 볼 수 있듯이 인터페이스 모드가 성공적으로 변경되었습니다.

이슈나 풀 리퀘스트를 만들거나 [email protected]으로 이메일을 보내주세요.
이 저장소는 MIT 라이선스 하에 있습니다.