
멀티스레드 정보 수집 및 서비스 열거를 위한 보안 도구로, 결과를 저장할 디렉토리 구조를 구축하고 추가 테스트를 위한 권장 사항을 작성합니다.

OSCP 연구실을 위해 제작된 정찰 도구로, 정보 수집 및 서비스 열거를 자동화하면서 각 호스트에 대한 결과, 발견 사항 및 사용된 익스플로잇, 권장 명령어, 루트 및 플래그 저장을 위한 디렉토리 구조를 만듭니다.
기여는 언제나 환영합니다!
Reconnoitre는 제가 몇 년간 유지 관리해 온 사랑받는 도구이지만, Interlace 내에서 자체 열거 접근 방식을 구축하는 것에 비해 기능 면에서 부족하다고 생각합니다. OSCP를 넘어 Infosec을 탐구하려는 분들은 이 프로젝트를 살펴보시기를 강력히 권장합니다.
이 도구는 Mike Czumak (T_v3rn1x)의 OSCP 리뷰 (link)에서 공개된 작업과 Re4son의 mix-recon (link)의 상당한 영향 및 코드를 기반으로 합니다. 가상 호스트 스캐닝은 원래 teknogeek의 작업에서 채택되었으며, jobertabma의 가상 호스트 발견 스크립트 (link)의 영향을 크게 받았습니다. 추가 가상 호스트 스캐닝 코드는 Tim Kent와 제가 공동 작업한 프로젝트에서 가져왔으며, 여기 (link)에서 확인할 수 있습니다.
Reconnoitre를 설치하려면 먼저 원하는 위치에 다음을 실행하여 저장소의 로컬 복사본을 만드십시오:
git clone https://github.com/codingo/Reconnoitre.git
이 작업을 완료한 후 다음 명령어로 setup.py를 실행하십시오:
python3 setup.py install
설치가 완료되면 Reconnoitre가 경로에 추가되며 (reconnoitre로), 어디서든 다음 명령어로 실행할 수 있습니다:
reconnoitre <args>
이 도구는 개인적인 용도로 자유롭게 사용 및 복사할 수 있지만, 원래 이 자동화 작업을 시작한 Mike Czumak에게 출처와 크레딧을 제공해야 합니다.
이 예제는 도구의 잠재적인 사용 사례를 파악할 수 있도록 제공됩니다. 원하는 스캔 목표에 따라 명령어를 추가하거나 제거할 수 있습니다.
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
출력 예시는 다음과 같습니다:
root@kali:~/# reconnoitre -t 192.168.1.5 --services -o /root/Documents/labs/
__
|"""\-= RECONNOITRE
(____) An OSCP scanner
[#] Performing service scans
[*] Loaded single target: 192.168.1.5
[+] Creating directory structure for 192.168.1.5
[>] Creating scans directory at: /root/Documents/labs/192.168.1.5/scans
[>] Creating exploit directory at: /root/Documents/labs/192.168.1.5/exploit
[>] Creating loot directory at: /root/Documents/labs/192.168.1.5/loot
[>] Creating proof file at: /root/Documents/labs/192.168.1.5/proof.txt
[+] Starting quick nmap scan for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found HTTP service on 192.168.1.5:80
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[*] TCP quick scan completed for 192.168.1.5
[+] Starting detailed TCP/UDP nmap scans for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[>] Found HTTP service on 192.168.1.5:80
[*] TCP/UDP Nmap scans completed for 192.168.1.5
또한 각 대상의 스캔 폴더에 다음 권장 사항 파일을 작성합니다:
[*] Found HTTP service on 192.168.1.50:80
[>] Use nikto & dirb / dirbuster for service enumeration, e.g
[=] nikto -h 192.168.1.50 -p 80 > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_nikto.txt
[=] dirb http://192.168.1.50:80/ -o /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirb.txt -r -S -x ./dirb-extensions/php.ext
[=] java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -r /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirbuster.txt -u http://192.168.1.50:80/
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/common.txt -u http://192.168.1.50:80/ -s '200,204,301,302,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_common.txt -t 50
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/cgis.txt -u http://192.168.1.50:80/ -s '200,204,301,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_cgis.txt -t 50
[>] Use curl to retreive web headers and find host information, e.g
[=] curl -i 192.168.1.50
[=] curl -i 192.168.1.50/robots.txt -s | html2text
[*] Found MS SMB service on 192.168.1.5:445
[>] Use nmap scripts or enum4linux for further enumeration, e.g
[=] nmap -sV -Pn -vv -p445 --script="smb-* -oN '/root/Documents/labs/192.168.1.5/nmap/192.168.1.5_smb.nmap' -oX '/root/Documents/labs/192.168.1.5/scans/192.168.1.5_smb_nmap_scan_import.xml' 192.168.1.5
[=] enum4linux 192.168.1.5
[*] Found RDP service on 192.168.1.5:3389
[>] Use ncrackpassword cracking, e.g
[=] ncrack -vv --user administrator -P /root/rockyou.txt rdp://192.168.1.5
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --hostnames
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services --quick
이 명령은 대상 범위 내 모든 서비스를 스캔하여 라이브 호스트의 파일 구조를 만들고, 발견된 서비스를 기반으로 실행할 다른 명령어의 권장 사항을 작성합니다. --quick을 제거하면 추가 프로브가 수행되지만 실행 시간이 크게 길어집니다.
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
호스트 및 서비스 스캔을 위한 기본 요구 사항은 nbtscan과 nmap을 모두 설치하는 것입니다. 호스트 스캔을 사용하지 않고 핑 스윕 및 서비스 스캔만 수행하려면 nmap만 설치해도 됩니다. 출력된 _findings.txt_는 Kali Linux를 사용하지 않는 경우 사용 가능하지 않을 수 있는 추가 도구를 권장하는 경우가 많습니다. 모든 요구 사항과 권장 사항은 Kali Linux에 기본적으로 포함되어 있으며, 이 도구를 사용하기 위한 권장 배포판입니다.
이러한 요구 사항 외에도 출력은 종종 찾아야 할 단어 목록을 참조합니다. OSCP를 준비 중이라면 g0tmilk의 "List of Recommended Tools" 스레드에서 찾을 수 있습니다. 그렇지 않은 경우 온라인이나 Kali Linux 설치 내에서 대부분의 항목을 찾을 수 있습니다.
첫 번째 단계는 docker를 설치하는 것입니다 (이미 설치되지 않은 경우). Docker 설치
기본 사용법:
cd <Reconnoitre 디렉토리>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
파일을 로컬에 저장하려면 Docker 컨테이너에 디렉토리를 마운트할 수 있습니다.
cd <Reconnoitre 디렉토리>
docker build -t reconnoitre .
mkdir /path/to/dir
docker run -v /path/to/dir:/outputdir --services -o outputdir -t 127.0.0.1
| 인수 | 설명 |
|---|
| -h, --help | 도움말 메시지를 표시하고 종료 |
| -t TARGET_HOSTS | 대상 주소 범위 또는 단일 호스트를 설정. 호스트가 포함된 파일일 수도 있음. |
| -o OUTPUT_DIRECTORY | 결과를 기록할 대상 디렉토리 설정. |
| -w WORDLIST | 사전 컴파일된 명령어 또는 실행된 공격에 사용할 단어 목록을 선택적으로 지정. |
| --pingsweep | 핑 스윕을 수행하여 라이브 호스트를 발견하고 OUTPUT_DIRECTORY에 새 target.txt 파일을 작성. |
| --dns, --dnssweep | 대상 목록에서 DNS 서버를 찾음. |
| --snmp | 대상 목록에서 SNMP 요청에 응답하는 호스트를 찾음. |
| --services | 대상에 대해 서비스 스캔을 수행하고 추가 명령어 실행을 위한 권장 사항을 작성. |
| --hostnames | 대상 호스트 이름을 발견하여 hostnames.txt에 기록. |
| --virtualhosts | 지정된 단어 목록을 사용하여 가상 호스트를 발견. 발견된 호스트 이름을 통해 확장 가능. |
| --ignore-http-codes | 가상 호스트 스캔에서 무시할 HTTP 코드를 쉼표로 구분하여 지정. |
| --ignore-content-length | 특정 길이의 콘텐츠 길이를 무시. 서버가 모든 가상 호스트 추측에 대해 정적 페이지를 반환할 때 유용할 수 있음. |
| --quiet | 배너와 헤더를 억제하고 피드백을 grep 가능한 결과로 제한. |
| --quick | 빠른 스캔과 첫 번째 라운드 권장 사항 작성 후 다음 대상으로 이동. |
| --no-udp | UDP 서비스 스캔을 비활성화 (기본적으로 켜져 있음). |