inter-recon
자동 초기 웹 및 취약점 정찰을 수행하는 스크립트.
오류 발생 시 일부 검사 기능이 있습니다.
일부 검사를 건너뛰거나, 다시 시작하거나, 중단한 지점부터 계속할 수 있는 옵션이 있습니다. (네트워크 문제, 예: VPN 시간 제한으로 인해 발생할 수 있습니다.)
inter-recon 스크립트를 bin 경로(예: /usr/bin/)에 복사하거나 링크하면 원하는 위치에서 스크립트를 실행할 수 있습니다. 출력은 현재 디렉토리에 생성됩니다.
중요: README 끝에 있는 WFUZZ 문제 및 해결 방법을 확인하세요 (추가 정보 섹션)
여러 알려진 도메인/IP를 사용하려면 (예시):
- domains.txt 파일을 생성하여 모든 도메인 또는 다른 IP를 저장
- 실행: inter-recon -T $(pwd)/domains.txt -d $(pwd)/known-domains -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
네트워크/IP에서 사용하려면 (예시):
- 실행: inter-recon -t 10.11.1.1/24 -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
사용 방법:
inter-recon.sh [옵션]
-t {네트워크 또는 IP}
-T {대상 경로}
-d {사전 경로}
-w {DICT 경로}
-s {스캔 유형}
-a 선택 사항, 처음 실행 시 wfuzz 과정에서 모든 것을 건너뛰고 질문하지 않는 완전 자동 스캔용
스캔 유형
- all
- portscan
- nmap TCP -> 전체 포트 검사, 다음 포트 중 하나라도 열려 있으면 호스트가 활성 상태인지 확인 (1025,1028,1029,10443,111,135,139,1521,161,1917,21,22,23,25,2869,3306,3389,443,445,49000,497,5000,515,53,548,5985,5986,6000,79,80,8080,8081,8090,9001,9002,9100,993,995)
- nmap UDP -> 기본 호스트 활성 프로세스로 상위 100개 포트
- vulnscan
- nmap UDP 및 TCP 스캔 결과를 파일로 파싱
- nmap UDP 및 TCP 스캔 결과를 서비스별로 services 폴더에 파싱
- 열린 포트에 대해 포트/버전 관련 스크립트를 실행하는 nmap UDP 및 TCP
- smbmap 게스트 실행 -> 사용자 없이 읽기/쓰기 가능한지 확인
- enum4linux 게스트 실행 -> samba에서 검색된 정보 확인
- smbversion 실행 -> samba 버전 확인 (리눅스 서버에서 samba 버전을 확인할 수 있는 유일한 방법인 경우가 있음)
- webscan
- nmap 실행 결과에서 httpx로 HTTP 발견
- wfuzz로 발견된 URL에 대해 퍼징
- aquatone으로 퍼징 결과 status 200 URL 스크린샷
- byp4xx로 403 우회 기법
- 다음 단계 -> 스크립트 실행 후 수행할 작업에 대한 간략한 설명
- 문서 폴더 및 템플릿 구조 -> 증거를 추가할 폴더를 만들고 스캔 관련 정보를 포함한 .md 파일 추가
- vuln
- portscan (위와 동일)
- vulnscan (위와 동일)
- 다음 단계 (위와 동일)
- 문서 폴더 및 템플릿 구조
- web
- portscan (위와 동일)
- webscan (위와 동일)
- 다음 단계 (위와 동일)
- 문서 폴더 및 템플릿 구조
구조:
- 먼저 TCP 및 UDP 포트 스캔(버전 포함, nmap, sudo 필요)
- 취약점 정찰 스캔 (포트를 "IP,포트,서비스,버전" 형식의 파일로 파싱, 서비스 파일로 파싱, 전체 포트/버전 관련 스크립트로 nmap 실행)
- httpx가 HTTP 포트를 발견하면 웹 퍼징 정찰 스캔 (httpx, wfuzz, aquatone, byp4xx 403 파일 <- status 403이 있는 경우)
사용된 도구:
- nmap (일반 버전 및 nmap-vulners 스크립트 사용, 둘 다 sudo 필요, TCP (일부 포트에 -PS를 사용하여 호스트가 UP인 경우 전체 포트) 및 UDP (상위 100개 포트만))
- httxp (nmap 실행 결과에서 HTTP 포트를 가져오기 위해)
- aquatone (HTTP 발견에서 status 200 응답의 스크린샷을 찍기 위해)
- wfuzz (HTTP 포트에 퍼징을 수행하기 위해)
- byp4xx (다양한 방법으로 403 URL을 우회하기 위해)
- smbmap (네트워크 공유 폴더에 대한 게스트 권한을 얻기 위해)
- enum4linux (게스트 권한으로 smb 정보를 얻기 위해)
- smbversion (실제 smb 버전을 얻기 위해)
- dnsrecon (DNS 서버에 존 전송을 시도하기 위해)
- crackmapexec (서버 관련 이름을 얻기 위해)
- host (DNS 서버의 호스트 이름 가져오기)
- dig (서버를 네임서버(@)로 사용하여 DNS 서버의 호스트 이름 가져오기)
출력 폴더 구조: (예시)
- 192.168.122.1-24/ -> 초기 폴더
- nmap/ -> TCP 및 UDP nmap 결과를 xml 및 grepable 형식으로 저장 (버전 포함)
- nmap-tcp-target.xml -> 다른 도구로 가져오기 위한 nmap 출력
- nmap-udp-target.xml -> 다른 도구로 가져오기 위한 nmap 출력
- nmap-tcp-target.xml -> 파싱 및 가독성 향상을 위한 grepable nmap
- nmap-udp-target.xml -> 파싱 및 가독성 향상을 위한 grepable nmap
- aux/ -> 이전 실행 제어 및 건너뛴 wfuzz URL 저장
- nmap/ -> httpx에 사용할 모든 nmap 파일 보관, httpx 과정에서 처리된 nmap 파일 제거, 오류 발생 시 해당 nmap 파일로 계속 진행
- full-initial-files.txt -> 실행이 올바른 URL은 여기서 제거
- wfuzz-skipped-urls.txt -> 오류로 인해 건너뛴 URL을 추가 ((총 요청 + 1) - 처리된 요청 != 0)
- debug/ -> 실행 디버그 정보 저장
- nmap-tcp-output.txt -> nmap (버전만) 출력 실행
- nmap-tcp-cve-output.txt -> 모든 관련 스크립트를 실행하는 -A 옵션의 nmap 출력
- nmap-udp-output.txt -> nmap (버전만) 출력 실행
- nmap-udp-output.txt -> 모든 관련 스크립트를 실행하는 -A 옵션의 nmap 출력
- wfuzz-output.txt -> wfuzz 출력 실행
- screenshot-output.txt -> aquatone 출력 실행
- fuzzing/ -> wfuzz 실행 결과 저장 (Status 50* 및 40* 확인 중요)
- services/ -> nmap에서 파싱된 모든 서비스 저장
- {SERVICE-NAME}-services.txt -> IP,포트,추가 서비스 정보 형식의 서비스 실행 결과
- cve/ -> nmap-vulners 스크립트가 찾은 호스트별 취약점 저장
- {IPs}.txt -> nmap-vulners 스크립트 출력
- http-discover/ -> httpx 실행 저장 및 제어
- httpx_aux.txt -> httpx 실행을 위한 모든 도메인+포트 파일
- screenshots/ -> wfuzz에서 찾은 status 200 URL의 스크린샷 저장
- screens -> 모든 스크린샷 폴더
- report.html -> 구조화된 정보가 포함된 보고서
- {기타} -> report.html 관련 기타 파일
- full-initial-files.txt -> httpx가 찾은 초기 HTTP 발견 URL (wfuzz 퍼징 대상)
- urls-status-{200,401,403,etc}.txt -> wfuzz가 찾은 최종 상태 URL, 변수 $status (찾은 URL의 상태)에 따라 변경됨
- targets.txt -> -t 매개변수에 추가한 IP 또는 네트워크가 저장된 파일
- bypass/ -> byp4xx lobuhi 애플리케이션 폴더 (403 URL이 있는 경우에만)
- byp4xx-{URL에서 : 및 / 제외}.txt -> 각 403 URL에 대한 byp4xx 출력
- all-urls-fuzzing-results.txt -> "urlStatus URL" 형식의 모든 URL 퍼징 스캔 결과 파일
- full-nmap-parsed-tcp.txt -> "IP,포트,서비스,버전" 형식으로 파싱된 nmap 출력
- smb/
- smbmap/
- {HOST}-smbmap.txt -> 게스트 samba 폴더 권한 smbmap 실행 결과
- enum4linux/
- {HOST}-enum4linux.txt -> 복구 가능한 게스트 정보
- smbversion/{HOST}-smbversion.txt -> samba 버전 (nmap 및 다른 도구가 실제 버전을 알지 못하는 경우 유용)
- dns
할 일:
- wfuzz에서 직접 문서에 URL 상태 파일 추가 (200, 401, 403, 503, 확인을 잊지 않도록)
- 취약점 스캔에 "OPENVAS 스캔" 포함
- 웹 스캔에 wfuzz가 찾은 HTTP URL에서 URL 및 도메인 캡처 포함
- 웹 또는 다른 스크립트 실행에서 정보를 가져올 수 있는 OSINT라는 새로운 스캔 유형 추가
도구 설치 URL:
추가 정보
- UDP nmap은 상위 100개 포트만 스캔합니다. 시간이 있다면 백그라운드에서 전체 UDP 포트로 추가 nmap을 수행하세요.
- TCP nmap은 일부 포트를 확인하여 호스트가 UP인지 확인하고 UP인 경우에만 스캔합니다. 시간이 있다면 백그라운드에서 -Pn 옵션으로 전체 TCP 포트로 추가 nmap을 수행하세요.
- wfuzz가 스크립트를 차단하는 경우를 몇 번 보았습니다. wfuzz는 URL 오류가 있을 때 교착 상태(deadlock) 문제가 있습니다. 이 문제가 해결될 때까지의 해결 방법은 /usr/local/lib/python3.9/dist-packages/wfuzz/myhttp.py 파일의 "Cleanup" 함수에서 th.join()을 주석 처리하고 pass를 추가하는 것입니다.