
확장 가능한 익스플로잇 프레임워크로, 모듈형 멀티태스킹 아키텍처 기반으로 제공됩니다.
모듈식이며 확장성이 뛰어난 멀티태스킹 및 멀티프로세싱 아키텍처를 기반으로 제공되는 교육용 익스플로잇 프레임워크입니다.
버전 1을 찾으시나요? 이 저장소의 브랜치를 확인하세요.
Brutus는 Python으로 작성된 교육용 익스플로잇 프레임워크입니다. 연결 전후 네트워크 기반 익스플로잇과 웹 기반 정찰을 자동화합니다. 경량 프레임워크인 Brutus는 타사 종속성에 대한 의존도를 최소화하는 것을 목표로 합니다. Kali Linux에 최적화되어 있지만, macOS 및 대부분의 Linux 배포판과도 호환되며 완전한 대화형 명령줄 인터페이스와 다양한 플러그인 시스템을 제공합니다.
Brutus는 확장성이 뛰어난 모듈식 아키텍처를 특징으로 합니다. 포함된 익스플로잇(플러그인 계층)은 스레드 풀과 스레드 안전 비동기 큐(해당 모듈에 가장 적합한 방식)로 구성된 '태스킹 계층'에서 실행되는 여러 분리된 모듈로 구성됩니다. 메인 스레드는 앱 컨텍스트를 관리하고 새 프로세스를 디스패치하여 작업이 백그라운드나 별도의 셸 등에서 실행될 수 있도록 하는 멀티프로세싱 풀 위에서 실행됩니다.
UI 계층도 분리되어 있으며 확장 가능합니다. 기본적으로 Brutus는 메뉴 기반 명령줄 인터페이스 UI와 함께 제공되지만 GUI, 인수 파서, HTTP API 또는 원격 프로시저 호출을 위한 어댑터를 추가하지 못할 이유는 없습니다.
마지막으로 Brutus에는 파일 시스템 작업, 셸(터미널 에뮬레이터) 관리, 지속성 방법 및 시스템 메타데이터를 위한 일반적인 기능을 갖춘 유틸리티 계층이 있습니다.
Python 해킹에 관심이 있다면 스크립트를 직접 가져와도 됩니다. 각 모듈은 독립적으로 실행될 수 있습니다.
웹 스캐닝 및 페이로드 컴파일 데모: mp4 보기

다음 종속성이 필요할 수 있습니다:
Brutus는 Kali Linux에 최적화되어 있습니다. Kali Linux를 VM에서 실행하는 방법에 대한 정보는 온라인에 많이 있습니다.
설치하려면:
pipenv install
실행:
pipenv run brutus
테스트:
pipenv run test
린트:
pipenv run lint
개발을 위한 Git Hooks 설정:
pipenv run setup
기능 제안, 버그 수정 등이 포함된 PR을 자유롭게 열어주세요. 이 프로젝트의 많은 부분이 아직 진행 중입니다. 기본은 마련되어 있고 여러분이 구축할 준비가 되어 있습니다.
Brutus에는 세 가지 거시적 범주로 일반화할 수 있는 여러 모듈이 포함되어 있습니다: 네트워크 기반, 웹 기반, 페이로드. 후자 범주는 컴파일러와 해당 페이로드의 라이브러리입니다. 페이로드는 Brutus의 대화형 명령줄 메뉴를 통해 컴파일할 수 있습니다. 컴파일된 페이로드는 이후 Brutus의 적용 가능한 네트워크 기반 모듈 중 다수에 로드될 수 있습니다.
Brutus의 기본 계층은 동시 멀티태스킹을 위해 POSIX 스레드를 사용합니다. 일부 모듈(예: 본질적으로 I/O 바운드가 많은 모든 것)은 대신 Python의 async I/O 라이브러리를 사용하며 Python의 기본 이벤트 루프 위의 추상화에서 실행됩니다.
포함된 유틸리티/스크립트
참고: 이 도구는 48비트 MAC용이며, %02x 기본 바이트 형식을 사용합니다.
MAC(Media Access Control)은 장치 제조업체가 네트워크 인터페이스에 할당하는 영구적이고 물리적이며 고유한 주소입니다. 즉, 예를 들어 무선 카드에도 고유한 MAC 주소가 있습니다.
MAC 주소는 인터넷의 IP와 유사하게 네트워크 내에서 리소스와 데이터(패킷)의 적절한 전달을 용이하게 하기 위해 사용됩니다. 일반적으로 상호 작용은 소스 MAC과 대상 MAC으로 구성됩니다. MAC 주소는 사용자를 식별하거나, 필터링되거나, 액세스가 제한될 수 있습니다.
중요한 점은 이러한 고유 주소는 일시적이지 않다는 것입니다. 지속적이며 사용자가 다른 기계에 설치하더라도 장치와 연결된 상태를 유지합니다. 그러나 둘이 반드시 불가분하게 연결되어야 하는 것은 아닙니다...
이 모듈은 사용자 입력으로 주어진 무선 장치와 사용자가 해당 장치를 재할당하려는 유효한 MAC 주소를 수용합니다. 프로그램은 간단하기 때문에 더 이상 설명할 필요가 없을 것입니다: subprocess 모듈을 사용하여 무선 인터페이스를 내리고, MAC을 재할당하고, 다시 초기화하는 데 필요한 일련의 셸 명령을 자동화합니다.
MAC 주소를 적극적으로 변경하는 경우, 1) 무선 장치가 존재하는지, 2) 무선 장치가 MAC 주소를 지원하는지, 3) 사용자 입력 MAC 주소가 유효한 형식인지, 4) 무선 장치의 MAC 주소가 성공적으로 업데이트되었는지 확인하기 위한 일종의 유효성 검사 구조나 상위 수준 메서드가 있는 것이 현명할 수 있습니다. 이 도구는 이러한 기능을 자동화합니다.
특정 MAC 주소 대신 'generate' 옵션을 선택하면 프로그램은 IEEE 사양에 따라 유효한 MAC 주소를 생성합니다. 완전히 무작위(그리고 유효한) MAC 주소를 생성할 뿐만 아니라 특정 공급업체 접두사(OUI)로 시작하거나 멀티캐스트 및/또는 UAA 옵션으로 생성되는 MAC 주소를 생성하는 확장 기능을 구현하게 되어 기쁩니다. 이러한 옵션은 IEEE 사양에 따라 보강된 생성기 메서드의 바이트 코드 로직을 트리거합니다. MAC 주소에 대해 자세히 알아보려면 여기를 참조하세요.
네트워크 스캐너는 매우 유용한 또 다른 도구이며, 앞서 언급한 MAC 변경기와 함께 사용하면 강력합니다. 이 스캐너는 사용자 입력으로 유효한 IPv4 또는 IPv6 IP 주소와 선택적 서브넷 범위를 수용하여 ARP 요청 기능을 활용합니다.
그런 다음 프로그램은 주어진 IP 및/또는 범위를 가져와 IEEE 사양에 따라 검증합니다(다시 말하지만, 이 검증은 IPv4 및 IPv6 표준에 대해 실행됩니다). 마지막으로 주어진 IP와 생성된 이더넷 프레임으로 브로드캐스트 객체를 인스턴스화합니다. 이 객체는 주어진 네트워크 및 범위 내의 모든 연결된 장치 목록을 반환하여 IP를 각 MAC 주소에 매핑합니다.
프로그램은 이러한 연결 관계를 표 형식으로 출력하며, 상황에 따라 MAC 변경기의 입력으로 사용될 수 있습니다.
ARP 스푸프 모듈은 주어진 대상 클라이언트와 해당 네트워크 게이트웨이의 ARP 테이블을 동시에 조작하여 네트워크 내 패킷 흐름을 리디렉션할 수 있게 해줍니다. 이 모듈은 이 과정에서 포트 포워딩을 자동으로 활성화하고, 동적으로 ARP 패킷을 구성하여 전송합니다.
사용자가 모듈을 종료하면 대상의 ARP 테이블이 재설정되어 컨트롤러가 위험한 상황에 처하지 않도록 합니다(게다가 그것이 좋은 일입니다).
이 프로세스는 컨트롤러를 클라이언트와 AP 간의 패킷 흐름 중간에 위치시키므로, 컨트롤러는 모든 데이터 흐름에 접근할 수 있습니다(데이터의 잠재적 암호화 처리는 다른 스크립트의 작업입니다). 여기에서 자동화 및 정규 표현식을 통한 코드 대체, 강제 리디렉션, 원격 접속 등 패킷 흐름 오케스트레이션의 무수한 옵션이 명확해집니다. 다행히도 Brutus가 이 또한 자동화할 수 있습니다.
패킷 스니퍼는 ARP 스푸퍼를 실행한 후 사용하기 좋은 모듈입니다. 가로챈 모든 HTTP 패킷 데이터(URL 또는 가능한 사용자 자격 증명 포함)의 데이터 흐름을 생성합니다.
스크립트는 확장 가능하며, 사용 가능한 여러 필터 중 하나로 리스너 객체를 인스턴스화하여 다양한 프로토콜을 수용할 수 있습니다. Brutus는 HTTPS를 자동으로 다운그레이드하므로, HSTS가 관련되지 않는 한 데이터 흐름은 정찰에 사용할 수 있습니다.
면책 조항: 이 소프트웨어와 그 안의 모든 내용은 연구 목적으로만 제작되었습니다. 본 소프트웨어를 악의적이거나 불법적인 방식으로 사용하려는 사람들의 행동에 대해 어떠한 책임도 지지 않으며, 그들의 행동에 대한 책임을 어떤 식으로도 묵인하거나 보유하지 않습니다.