
정찰 및 DOS 공격을 위한 bash 스크립트
빠르고 쉬운 네트워크 정찰 및 DOS 공격을 위한 bash select 메뉴
필요한 경우 sudo가 구현됩니다. Debian과 Arch에서 테스트되었습니다.
기여와 풀 리퀘스트를 환영합니다!
bash
sudo
curl
netcat ('-k' 옵션 지원 필수, openbsd 변종 권장)
hping3 (또는 nping을 플러드 공격 대체로 사용 가능)
openssl
stunnel
nmap
whois (필수는 아니지만 권장)
nslookup (또는 'host')
ike-scan
bind-tools (종종 'bind' 패키지에 포함, "host" 및 "nslookup"에 필요)
$ wget https://raw.githubusercontent.com/GinjaChris/pentmenu/master/pentmenu
$ chmod +x ./pentmenu
$ ./pentmenu
또는 https://github.com/GinjaChris/pentmenu/releases에서 최신 릴리스를 다운로드하여 압축을 풀고 스크립트를 실행합니다. 또는 git clone 사용:
git clone https://github.com/GinjaChris/pentmenu
정찰 모듈
Show IP - curl을 사용하여 외부 IP를 조회합니다. ip a 또는 ifconfig(적절한 경우)를 실행하여 로컬 인터페이스 IP를 표시합니다.
DNS Recon - 수동 정찰, DNS 조회(대상 입력에 따라 정방향 또는 역방향)와 대상의 whois 조회를 수행합니다. whois를 사용할 수 없으면 ipinfo.io에 대해 조회를 수행합니다 (IP에서만 작동, 호스트 이름에는 작동하지 않음).
Ping Sweep - nmap을 사용하여 대상 호스트 또는 네트워크에 ICMP 에코(ping)를 수행합니다.
Quick Scan - nmap을 사용하여 TCP SYN 스캔 방식으로 열린 포트를 스캔하는 TCP 포트 스캐너입니다. nmap은 TCP SYN 스캔 전에 핑 스윕을 수행하지 않습니다. 이 모듈은 가장 일반적인 1,000개 포트를 스캔합니다. 물론 단일 호스트 또는 전체 네트워크를 스캔하는 데 사용할 수 있지만, IP 주소 범위에서 대상을 식별하도록 설계되었습니다. 이 스캔은 완료하는 데 오랜 시간이 걸릴 수 있으므로 인내심을 가져주십시오.
Detailed Scan - nmap을 사용하여 활성 호스트, 열린 포트를 식별하고 OS 식별을 시도하며 배너를 수집/실행 중인 소프트웨어 버전을 식별합니다. nmap은 이 스캔의 일부로 핑 스윕을 수행하지 않습니다. nmap의 기본 User-Agent 문자열이 이 모드에서는 Microsoft Edge 브라우저의 것으로 변경되어 HTTP를 통한 탐지를 피하는 데 도움이 됩니다. 대상(호스트 이름/IP/서브넷)의 모든 TCP 포트가 스캔됩니다. 이 모듈은 단일 호스트 또는 여러 호스트를 스캔할 수 있지만, 주 용도는 단일 시스템에 대한 정보 수집 스캔을 수행하는 것입니다. 이 스캔은 완료하는 데 오랜 시간이 걸릴 수 있으므로 인내심을 가져주십시오.
UDP 스캔 - nmap을 사용하여 열린 UDP 포트를 스캔합니다. 모든 UDP 포트가 스캔됩니다.
서버 가동 시간 확인 - hping3로 열린 TCP 포트를 쿼리하여 대상의 가동 시간을 추정합니다. 결과의 정확도는 시스템에 따라 다릅니다. 모든 서버에서 작동하지는 않습니다.
IPsec 스캔 - ike-scan과 다양한 Phase 1 제안을 사용하여 IPsec VPN 서버의 존재를 식별하려고 시도합니다. 이 모듈의 모든 텍스트 출력( "핸드셰이크" 또는 "선택된 제안 없음" 등)은 IPsec VPN 서버의 존재를 나타냅니다. ike-scan 및 VPN phase 1에 대한 훌륭한 개요는 http://nta-monitor.com/wiki/index.php/Ike-scan_User_Guide 를 참조하십시오.
DOS 모듈
ICMP 에코 플러드 - hping3를 사용하여 대상에 전통적인 ICMP 에코 플러드를 실행합니다. 현대 시스템에서는 큰 효과를 보기 어렵지만, 방화벽의 동작을 관찰하기 위해 테스트하는 데 유용합니다. 'Ctrl C'를 눌러 플러드를 종료합니다. 플러드 패킷의 소스 주소는 구성 가능합니다. 대상은 IP(예: 127.0.0.1) 또는 호스트 이름(예: localhost.localnet.com)이 될 수 있습니다. 프로토콜을 대상의 일부로 포함하지 마십시오 (예: http://localhost.localnet.com).
ICMP Blacknurse 플러드 - hping3를 사용하여 대상에 ICMP 플러드를 실행합니다. ICMP 패킷은 "목적지 도달 불가, 포트 도달 불가" 유형입니다. 이 공격은 많은 시스템에서 높은 CPU 사용량을 유발할 수 있습니다. 'Ctrl C'를 눌러 공격을 종료합니다. 자세한 내용은 http://blacknurse.dk/ 를 참조하십시오. 플러드 패킷의 소스 주소는 구성 가능합니다.
TCP SYN 플러드 - hping3를 사용하여 TCP SYN 패킷 플러드를 전송합니다. hping3가 없으면 nmap-nping 유틸리티를 대신 사용하려고 시도합니다. hping3는 가능한 한 빠르게 패킷을 보내기 때문에 선호됩니다. 인터페이스의 소스 IP를 사용하거나, 소스 IP를 지정(스푸핑)하거나, 각 패킷마다 임의의 소스 IP를 스푸핑하는 옵션이 제공됩니다. 선택적으로 SYN 패킷에 데이터를 추가할 수 있습니다. 모든 SYN 패킷은 단편화 비트가 설정되고 hping의 가상 MTU 16바이트를 사용하여 단편화를 보장합니다. nmap-nping으로 대체되면 초당 X개의 패킷을 전송하여 총 Y개 패킷을 보낼 때까지 전송하며 인터페이스 IP 또는 지정된(스푸핑된) 소스 IP만 사용할 수 있습니다. TCP SYN 플러드는 서버를 마비시키지는 않지만 스위치/라우터/방화벽 인프라 및 상태 테이블을 테스트하는 좋은 방법입니다. hping이 아웃바운드 인터페이스와 IP를 보고하여 스크립트가 예상대로 작동하지 않는 것처럼 보일 수 있지만, 소스 IP는 지정된 대로 설정됩니다. 의심스러우면 패킷 캡처를 검토하십시오! 소스를 정의할 수 있으므로 예를 들어 LAND 공격(https://en.wikipedia.org/wiki/LAND 참조)을 쉽게 실행할 수 있습니다. 소스를 설정하는 기능을 사용하면 예를 들어 한 대상으로 SYN 패킷을 보내고 SYN-ACK 응답을 두 번째 대상으로 강제로 보낼 수도 있습니다.
TCP ACK 플러드 - SYN 플러드와 동일한 옵션을 제공하지만 ACK(확인) TCP 플래그를 대신 설정합니다. 일부 시스템은 이러한 패킷을 처리하는 데 과도한 CPU 사이클을 소비합니다. 소스 IP가 설정된 연결의 IP로 설정된 경우, 이 '블라인드' TCP ACK 플러드로 인해 설정된 연결이 중단될 수 있습니다. 이 공격은 설정된 연결의 세부 사항(시퀀스 번호 또는 확인 번호 등)을 고려하지 않기 때문에 '블라인드'로 간주됩니다.
TCP RST 플러드 - SYN 플러드와 동일한 옵션을 제공하지만 RST(리셋) TCP 플래그를 대신 설정합니다. 소스 IP가 설정된 연결의 IP로 설정된 경우, 이러한 공격은 설정된 연결을 중단시킬 수 있습니다. 예를 들어 https://en.wikipedia.org/wiki/TCP_reset_attack 참조.
TCP XMAS 플러드 - SYN 및 ACK 플러드와 유사하며 동일한 옵션을 가지지만 모든 TCP 플래그(CWR,ECN,URG,ACK,PSH,RST,SYN,FIN)가 설정된 패킷을 전송합니다. 패킷은 '크리스마스 트리처럼 불이 켜진' 것으로 간주됩니다. 적어도 이론적으로는 이러한 패킷은 표준 패킷보다 수신자가 처리하는 데 더 많은 리소스를 필요로 합니다. 그러나 이러한 패킷은 비정상적인 동작(공격 등)을 상당히 나타내며 일반적으로 IDS/IDP에서 쉽게 식별됩니다.
UDP 플러드 - TCP SYN 플러드와 매우 유사하지만 UDP 패킷을 지정된 호스트:포트로 전송합니다. TCP SYN 플러드 기능과 마찬가지로 hping3가 사용되지만 없으면 nmap-nping을 대신 사용하려고 시도합니다. 모든 옵션은 TCP SYN 플러드와 동일하지만 UDP 패킷에 보낼 데이터를 지정해야 합니다. 마찬가지로 스위치/라우터 처리량을 확인하거나 VOIP 시스템을 테스트하는 좋은 방법입니다.
SSL DOS - OpenSSL을 사용하여 대상 호스트:포트를 DOS하려고 시도합니다. 많은 연결을 열고 서버가 비용이 많이 드는 핸드셰이크 계산을 하도록 만듭니다. 이것은 예쁘거나 우아한 코드가 아니며 'Ctrl c'를 누르자마자 즉시 중지되기를 기대하지 마십시오. 그러나 잔인할 정도로 효과적일 수 있습니다. 클라이언트 재협상 옵션이 제공됩니다. 대상 서버가 클라이언트 시작 재협상을 지원하는 경우 이 옵션을 선택해야 합니다. 대상 서버가 클라이언트 재협상을 지원하지 않더라도(예: CVE-2011-1473) 이 공격으로 서버에 영향을 주거나 DOS를 할 수 있습니다. 로드 밸런서/프록시/SSL 지원 서버(HTTPS뿐만 아니라 모든 SSL 또는 TLS 암호화 서비스!)에 대해 실행하여 부하를 견디는 방식을 확인하는 데 매우 유용합니다.
이 공격에 대한 방어 방법은 다음과 같습니다(이에 국한되지 않음):
클라이언트당 TCP 연결 수 제한; 이는 단일 시스템이 서버를 사용할 수 없게 만드는 것을 방지하지만, 예를 들어 10,000개의 클라이언트가 동시에 공격을 시작하는 경우 효과적이지 않습니다. 또한 이러한 방어 조치는 포워드 프록시 서버 뒤에서 작동하는 여러 (합법적인) 클라이언트에 부정적인 영향을 미칠 수 있습니다.
완전한 HTTP 요청을 보내는 데 사용 가능한 시간 제한; 이는 공격이 서버에 헤더를 천천히 보내는 데 의존하기 때문에 효과적입니다(서버는 응답하기 전에 클라이언트로부터 모든 헤더를 기다려야 합니다). 서버가 요청의 모든 헤더를 수신하는 시간을 10초(예)로 제한하면 공격의 효과를 크게 제한할 것입니다. 이러한 조치로 인해 느리거나 손실이 많은 연결을 통해 사이트에 접속하는 합법적인 클라이언트가 차단될 수 있습니다.
IPsec DOS - ike-scan을 사용하여 무작위 소스 IP에서 Main 모드 및 Aggressive 모드 Phase 1 패킷으로 지정된 IP를 플러드하려고 시도합니다. IPsec Scan 모듈을 사용하여 IPsec VPN 서버의 존재를 식별하십시오.
Distraction Scan - 이것은 실제 DOS 공격이 아니라 hping3를 사용하여 선택한 스푸핑된 IP(예: 최악의 적의 IP)에서 여러 TCP SYN 스캔을 실행합니다. 대상이 가질 수 있는 IDS/IPS를 트리거하기 위해 명백한 스캔으로 설계되었으며, 따라서 실제 스캔이나 다른 작업을 숨기기를 바랍니다.
DNS NXDOMAIN 플러드 - 이 공격은 netcat을 사용하며 (대부분) 존재하지 않는 도메인에 대한 DNS 쿼리 플러드와 일부 잘못된 형식의 DNS 요청을 전송하여 DNS 서버에 스트레스 테스트를 수행하도록 설계되었습니다. 재귀적 DNS 서버에 대해 실행하면 서버를 묶어두고 캐시를 부정 응답으로 채워 합법적인 쿼리를 느리게 하거나 방지합니다. 여러 공격 클라이언트에서 실행할 때 가장 효과적입니다. 'Ctrl c'를 눌러 공격을 중지합니다.
추출 모듈
파일 전송 - 이 모듈은 netcat을 사용하여 TCP 또는 UDP로 데이터를 전송합니다. 데이터 추출에 매우 유용할 수 있습니다. 파일 전송 전에 md5 및 sha512 체크섬이 계산되어 표시됩니다. 파일은 선택한 서버로 보낼 수 있습니다. Listener는 이러한 파일을 수신하도록 설계되었습니다.
리스너 - netcat을 사용하여 구성 가능한 TCP 또는 UDP 포트에서 리스너를 엽니다. syslog 연결 테스트, 파일 수신 또는 네트워크에서 활성 스캔 확인에 유용할 수 있습니다. 리스너가 수신한 모든 내용은 ./pentmenu.listener.out 또는 선택한 파일에 기록됩니다. UDP를 통해 파일을 수신할 때 리스너는 'Ctrl C'로 수동으로 닫아야 합니다. 이는 UDP가 비연결형 프로토콜이므로 여러 패킷을 수신하기 위해 netcat을 열어두도록 강제해야 하기 때문입니다. TCP를 통해 파일을 수신할 때 클라이언트가 연결을 닫으면(파일 전송 후) 연결이 자동으로 닫히고 수신된 파일의 md5 및 sha512 체크섬이 계산됩니다.
이 스크립트는 책임 있고 승인된 용도로만 사용됩니다. 귀하는 자신의 행동에 책임이 있으며 이 스크립트는 어떠한 종류의 보증이나 보장 없이 제공됩니다. 저자는 귀하를 대신하여 책임이나 의무를 지지 않습니다.
Pentmenu는 Arch Linux에서 패키지로 제공됩니다. ArchStrike 및 Parrot linux에 큰 사랑을 보냅니다.
필요하지 않습니다. 저자를 올바르게 표시해 주십시오 :)
Slowloris - netcat을 사용하여 대상 호스트:포트에 HTTP 헤더를 천천히 전송하여 리소스를 고갈시키는 것을 목표로 합니다. 모든 HTTP 서버에 효과적인 것은 아니지만 연결을 충분히 오래 열어둘 수 있다면 많은 서버에 효과적입니다. 따라서 이 공격은 서버가 완전한 HTTP 요청을 보내는 데 사용할 수 있는 시간을 제한하지 않는 경우에만 효과적입니다. 이 공격의 일부 구현은 명확하게 식별 가능한 헤더를 사용하지만 여기서는 그렇지 않습니다. 대상에 열 연결 수는 구성 가능합니다. 각 헤더 라인을 보내는 간격은 구성 가능하며 기본값은 5초에서 15초 사이의 임의 값입니다. 아이디어는 헤더를 천천히 보내되 서버의 유휴 시간 초과가 연결을 닫을 정도로 느리지 않게 하는 것입니다. 예를 들어 900초마다 하나의 헤더 라인을 보내면 서버가 두 번째 헤더 라인을 보내기 훨씬 전에 연결을 닫을 가능성이 높습니다. SSL(SSL/TLS) 사용 옵션이 제공되며, stunnel이 필요하고 HTTPS 서버에 대해 공격을 사용할 수 있습니다. 일반 HTTP 서버에 대해서는 SSL 옵션을 사용하지 마십시오.