
모듈식 분산 침투 테스트 도구입니다.
v0.6.0
영어 | 中文.
Swarm은 분산 작업 큐를 사용하여 마스터-슬레이브 모드 시스템에서 통신을 구현하고 MongoDB를 데이터 저장소로 사용하는 오픈 소스 모듈형 분산 침투 테스트 도구입니다. 분산 프레임워크와 기능 모듈로 구성됩니다. 기능 모듈은 침투 기능을 완전히 새롭게 구현한 것일 수도 있고, 기존 도구를 간단히 래핑하여 분산 기능을 구현한 것일 수도 있습니다. 모듈식 아키텍처 덕분에 분산 프레임워크 아래에서 새로운 기능을 쉽게 사용자 정의하고 확장할 수 있습니다.
현재 버전 0.6.0에는 5개의 모듈이 있습니다:
자체 모듈을 작성하려면 이 문서를 읽어보세요.
Zipball은 여기에서 다운로드할 수 있습니다. git을 사용하여 swarm을 가져올 수도 있습니다:
git clone [email protected]:Arvin-X/swarm.git
그런 다음 setup.py를 사용하여 swarm을 설치합니다:
python setup.py install
Swarm은 Python 2.6.x 또는 2.7.x에서 작동하며, 마스터 호스트에 MongoDB 지원이 필요합니다.
아직 MongoDB가 없다면 apt-get을 사용하여 설치할 수 있습니다:
apt-get install mongodb
마스터 호스트에서 swarm을 실행하여 작업을 분배하고, 슬레이브 호스트에서 swarm-s를 '-p' 옵션과 함께 실행하여 마스터의 하위 작업을 완료합니다.
swarm-s -p 9090
또한 swarm을 실행할 때 '--waken' 옵션을 지정하여 슬레이브 호스트의 대상 포트에 리스너를 설정하여 swarm-s를 깨울 명령을 수신할 수 있습니다. 그렇지 않으면 '--waken'을 비워두어야 합니다. 리스너를 만들려면 nc 또는 socat을 다음과 같이 사용할 수 있습니다:
nc -e /bin/sh -l 9191
그리고 waken 명령을 다음과 같이 사용합니다:
swarm-s ARGS
명령에 "ARGS"를 남겨두고 swarm에 전달되는 CLI 인수가 되도록 해야 하며, swarm이 '-p'와 같은 필수 인수로 대체합니다.
swarm 기본 사용법:
usage: swarm [-h] -m MODULE [-v] [-c] [-o PATH] [-t [TARGET [TARGET ...]]]
[-T PATH] [-s [SWARM [SWARM ...]]] [-S PATH] [--waken CMD]
[--timeout TIME] [--m-addr ADDR] [--m-port PORT] [--s-port PORT]
[--authkey KEY] [--db-addr ADDR] [--db-port PORT] [--process NUM]
[--thread NUM] [--taskg NUM] [--dom-compbrute] [--dom-dict PATH]
[--dom-maxlevel NUM] [--dom-charset SET] [--dom-levellen LEN]
[--dom-timeout TIME] [--dir-http-port PORT]
[--dir-https-port PORT] [--dir-compbrute] [--dir-charset SET]
[--dir-len LEN] [--dir-dict PATH] [--dir-maxdepth NUM]
[--dir-timeout TIME] [--dir-not-exist FLAG] [--dir-quick-scan]
[--nmap-ports PORTS] [--nmap-top-ports NUM] [--nmap-ops ...]
[--int-target [URLS [URLS ...]]] [--int-method METHOD]
[--int-headers JSON] [--int-cookies COOKIES] [--int-body BODY]
[--int-payload PAYLOAD] [--int-flag FLAGS] [--int-timeout TIME]
[--map-seed SEED] [--map-http-port PORT] [--map-https-port PORT]
[--map-cookies COOKIES] [--map-interval TIME]
[--map-timeout TIME]
선택적 인수:
-h, --help 이 도움말 메시지를 표시하고 종료합니다
-m MODULE ./modules/에서 모듈 이름을 사용하여 활성화합니다
출력:
이 옵션들은 출력을 제어하는 데 사용할 수 있습니다
-v 더 자세한 출력
-c 색상이 있는 로그 출력 비활성화
-o PATH 대상 파일에 로그 기록
대상:
모듈에서 대상을 정의하는 특별한 옵션이 없는 한, 대상을 정의하려면 이 옵션 중 하나 이상을 제공해야 합니다
-t [TARGET [TARGET ...]]
공백으로 구분 (예: github.com 127.0.0.0/24
192.168.1.5)
-T PATH 대상 목록이 포함된 파일, 한 줄에 하나의 대상
Swarm:
이 옵션들을 사용하여 swarm 연결을 사용자 정의합니다. 적어도 하나의 슬레이브 호스트를 제공해야 합니다.
-s [SWARM [SWARM ...]]
슬레이브 호스트를 깨워야 하는 경우 포트를 포함한 주소 (예: 192.168.1.2:9090 192.18.1.3:9191). 슬레이브 호스트에서 swarm-s가 이미 실행 중이면 포트 불필요
-S PATH 슬레이브 목록이 포함된 파일, 한 줄에 하나의 호스트
--waken CMD 슬레이브 호스트를 깨울 명령. 슬레이브 호스트에서 swarm-s가 이미 실행 중이면 null
--timeout TIME swarm에 요청을 보내고 응답을 받을 때까지 대기할 초
--m-addr ADDR 모든 슬레이브 호스트에서 접근 가능한 마스터 주소
--m-port PORT 마스터 호스트에서 작업을 분배하기 위한 수신 포트
--s-port PORT 슬레이브 호스트에서 마스터로부터 명령을 받기 위한 수신 포트
--authkey KEY 마스터와 슬레이브 호스트 간 인증 키
데이터베이스:
이 옵션들을 사용하여 MongoDB 서버에 접근할 수 있습니다
--db-addr ADDR MongoDB 서버 주소
--db-port PORT MongoDB 서버 수신 포트
공통:
이 옵션들을 사용하여 슬레이브 호스트의 공통 구성을 사용자 정의할 수 있습니다
--process NUM 슬레이브 호스트의 최대 동시 프로세스 수
--thread NUM 슬레이브 호스트의 최대 동시 스레드 수
--taskg NUM 1부터 3까지의 하위 작업 세분성
도메인 스캔:
이 옵션들은 서브도메인 이름 스캔의 swarm 동작을 사용자 정의하는 데 사용할 수 있습니다
--dom-compbrute 사전 없이 완전 무차별 대입 사용
--dom-dict PATH 서브도메인 이름 스캔에 사용할 사전 경로
--dom-maxlevel NUM 스캔할 서브도메인 최대 레벨
--dom-charset SET 완전 무차별 대입에 사용할 문자 집합
--dom-levellen LEN 각 레벨의 서브도메인 이름 길이 간격
--dom-timeout TIME 서브도메인 이름 스캔 타임아웃 옵션
디렉토리 스캔:
이 옵션들은 디렉토리 스캔의 swarm 동작을 사용자 정의하는 데 사용할 수 있습니다
--dir-http-port PORT 여러 포트가 필요하면 쉼표로 구분
--dir-https-port PORT
여러 포트가 필요하면 쉼표로 구분
--dir-compbrute 사전 없이 완전 무차별 대입 사용
--dir-charset SET 완전 무차별 대입에 사용할 문자 집합
--dir-len LEN 디렉토리 이름 또는 파일 이름 길이 간격
--dir-dict PATH 디렉토리 스캔에 사용할 사전 경로
--dir-maxdepth NUM 디렉토리 및 파일 스캔의 최대 깊이
--dir-timeout TIME 디렉토리 스캔 타임아웃 옵션
--dir-not-exist FLAG 여러 플래그가 필요하면 이중 쉼표로 구분
--dir-quick-scan 스캔에서 GET 대신 HEAD 메서드 사용
Nmap 모듈:
이 옵션들은 슬레이브 호스트에서 nmap 동작을 사용자 정의하는 데 사용할 수 있습니다
--nmap-ports PORTS '80,443,3306,1024-2048' 형식 지원
--nmap-top-ports NUM 가장 흔한 포트 <number>개 스캔
--nmap-ops ... nmap 매뉴얼 페이지에 있는 nmap 옵션 목록. CLI 인수에서 마지막에 위치해야 함
Intruder:
공격 포인트를 지정하려면 'int_target' 및 'int_body' 옵션에서 '@n@'과 같은 표시 기호를 사용하십시오. 여기서 'n'은 숫자입니다(예: '@0@', '@1@' 등). 이러한 공격 포인트에 사용할 페이로드를 'int_payload' 옵션으로 지정하여 공격을 완료합니다.
--int-target [URLS [URLS ...]]
대상 지정에 '-t' 또는 '-T' 옵션 대신 사용. 쉼표로 구분
--int-method METHOD 이 공격에 사용할 HTTP 메서드
--int-headers JSON JSON 형식 데이터 (예: {"User-Agent":"Mozilla/5.0","Origin":"XXX"})
--int-cookies COOKIES
쉼표로 구분 (예: PHPSESSIONID:XX,token:XX)
--int-body BODY HTTP 또는 HTTPS 본문. 이 옵션에서 표시 기호를 사용할 수 있음
--int-payload PAYLOAD
형식은 '@0@:PATH,@1@:CHARSET:NUM-NUM'을 따라야 함
--int-flag FLAGS 여러 플래그가 있으면 이중 쉼표로 구분
--int-timeout TIME intruder 모듈 타임아웃 옵션
Sitemap 크롤러:
이 옵션들은 사이트맵 크롤러를 사용자 정의하는 데 사용할 수 있습니다. 아직 JS 파싱은 지원하지 않습니다
--map-seed SEED 여러 시드가 있으면 쉼표로 구분
--map-http-port PORT 여러 포트가 필요하면 쉼표로 구분
--map-https-port PORT
여러 포트가 필요하면 쉼표로 구분
--map-cookies COOKIES
여러 쿠키가 있으면 쉼표로 구분
--map-interval TIME 두 요청 사이의 간격 시간
--map-timeout TIME 사이트맵 크롤러 타임아웃 옵션
요구 사항이 높은 경우 CLI 인수 대신 구성 파일을 사용하여 swarm을 구성하는 것이 좋습니다. 구성 파일은 /etc/swarm/에 있습니다.
Swarm은 GPLv3 라이선스에 따라 제공됩니다.