
Bifrost C2. Discord API를 사용한 오픈 소스 사후 침투.
Bifrost는 명령 및 제어(C2) 역할을 하는 오픈 소스 Discord 봇입니다. 이 C2는 클라이언트와 서버 간의 통신을 위해 Discord API를 사용합니다.
Python으로 개발된 이 C2는 사후 침투(post-exploitation)를 위한 여러 기능을 갖추고 있습니다.
앞서 언급했듯이, Bifrost는 기본적으로 Discord 사용자로부터 명령을 받아 미리 정의된 작업을 수행하는 Discord 봇입니다.
따라서 "감염"시킬 각 클라이언트에 대해 이 Discord 봇의 사본을 보내면, 봇이 Discord를 통해 사용자에게 응답합니다. 이를 통해 Discord 서비스 뒤에 숨어 은밀하게 활동할 수 있으며, 클라이언트와의 보안 연결을 유지할 수 있습니다.
면책 조항: 이 프로젝트는 승인된 테스트 또는 교육 목적으로만 사용해야 합니다.
Bifrost는 현재 Windows Defender에 탐지되고 있습니다. 저는 이미 이 "문제"를 해결하고 다시 우회하기 위해 노력 중입니다.
Virustotal 탐지율은 샌드박스 실행에 대한 방어가 전혀 없었을 때 5/67이었습니다.
Bifrost를 악성으로 탐지한 백신은 SecureAge APEX, Jiangmin, Cynet, Zillya, Palo Alto Networks입니다.
Bifrost는 오픈 프로젝트입니다. Bifrost에 기능을 추가하거나 기능 또는 코드 성능을 개선하려면, 포크를 생성하고 풀 리퀘스트를 여는 것이 메인 프로젝트에 반영되는 가장 좋은 방법입니다.
1 - Bifrost 소스 코드를 클론하거나 다운로드합니다.
2 - 라이브러리 종속성을 설치합니다.
pip install -r requirements.txt
3 - Discord 계정이 필요합니다.
4 - Discord에서 애플리케이션(봇) 생성
5 - General information 탭으로 이동하여 애플리케이션 ID를 복사합니다.
6 - Bot 탭으로 이동하여 봇을 생성하고 토큰을 복사합니다.
7 - 다음 링크에 애플리케이션 ID를 입력하여 봇을 Discord 서버에 초대합니다.
https://discord.com/oauth2/authorize?client_id=<APP_ID>&scope=bot&permissions=8
8 - 이제 Discord 서버에 채널을 생성하고 ID를 복사합니다.
참고: Discord 앱에서 개발자 기능을 활성화하면 채널 ID를 쉽게 복사할 수 있습니다.
이제 이 두 정보(채널 ID와 봇 토큰)를 가지고, bifrost.py 파일의 22번과 23번 줄에 있는 변수 값을 자신의 계정/채널 값으로 변경합니다.
봇과 채널을 생성하고 변수 값을 변경한 후, 아래 단계에 따라 페이로드를 클라이언트에 배포합니다.
pyinstaller를 사용하여 bifrost 실행 파일을 생성하거나, bifrost.py를 클라이언트에 보내고 모든 종속성을 설치합니다.
실행 파일을 사용하면 클라이언트에 Python이나 종속성이 미리 설치되어 있을 필요가 없습니다.
pyinstaller bifrost.py --onefile --noconsole --key th3r4ven_bifrost 또는
python -m pyinstaller bifrost.py --onefile --noconsole --key th3r4ven_bifrost
참고: 이 모든 매개변수는 선택 사항입니다. 사용 방법에 대한 자세한 내용은 pyinstaller 문서를 참조하세요.
bifrost.py를 보내고 종속성을 설치하거나, Windows 설치와 유사하게 이 과정을 자동화하는 스크립트/실행 파일을 생성할 수 있습니다.
Discord API를 통한 화면 실시간 스트리밍은 불가능합니다 :(
