
** 중단됨 ** 백그라운드 지능형 전송 서비스 (BITS)를 통신 프로토콜로 사용하고 Direct Syscalls + Dinvoke를 사용하여 EDR 사용자 모드 후킹 회피를 수행하는 C2 프레임워크.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS는 Microsoft의 Background Intelligent Transfer Service (BITS)를 사용하여 손상된 호스트와 백엔드 간의 통신 채널을 설정하는 C2 프레임워크입니다. C2 백엔드는 겉보기에 무해한 flask 웹 애플리케이션 뒤에 숨겨져 있으며, 앱이 수신한 HTTP 요청에 유효한 인증 헤더가 포함된 경우에만 접근할 수 있습니다. 이 도구는 모니터링이 엄격한 환경에서 사용하도록 설계되었기 때문에, EDR 및 AV 탐지를 피하기 위해 다음과 같은 기능이 구현되었습니다:
아키텍처와 관련하여 LOLBITS는 3가지 주요 요소로 구성됩니다:
프록시의 콘텐츠 검사를 차단하기 위해, 에이전트와 C2 서버 간에 전송되는 모든 관련 콘텐츠는 사전 공유된 무작위 비밀 키를 사용하여 RC4로 암호화됩니다. 인프라 동작의 개략적인 다이어그램은 다음 이미지와 같습니다:
블루 팀이 이전 요청 중 일부를 재현하여 C2 백엔드 인프라를 발견하지 못하도록 하기 위해, 각 인증 헤더는 무작위로 생성되며 단일 주기(POST 요청과 GET 요청으로 구성된 순서로, 순서대로)에만 유효합니다. 이전 인증 헤더는 무시되며 해당 요청에는 무해한 웹사이트가 표시됩니다.
이 도구의 일부 기능은 다른 프로젝트의 코드를 재사용하거나 여러 사이버 보안 연구원들의 노력 덕분에 구현되었습니다. 아래는 이 도구를 개선하기 위해 직간접적으로 사용된 외부 작업 및 프로젝트 중 일부에 대한 링크입니다:
C2 인프라에는 Windows Server 2016 이상, python 3.4+ 및 powershell 5.1+가 필요합니다. C# 에이전트는 Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 및 Windows 10에서 성공적으로 테스트되었습니다. 컴파일하려면 다음이 필요합니다:
1.- C2 서버에 이 저장소를 클론합니다.
git clone https://github.com/Kudaes/LOLBITS.git
2.- Windows Server Manager를 통해 웹 서버(IIS)를 설치합니다. CGI, ASP.NET 및 .NET 확장성 역할을 설치했는지 확인하세요.
또한 IIS용 .NET Framework 및 BITS 기능을 설치합니다.
3.- setup.ps1 스크립트를 관리자 권한으로 실행하여 전체 인프라를 배포하고 C# 에이전트를 설정합니다.
4.- C# 에이전트를 컴파일합니다. 컴파일하면 .exe 파일과 외부 종속성(Newtonsoft.Json.dll)이 생성됩니다. ILMerge를 사용하여 단일 .exe를 생성하거나 두 파일을 모두 손상된 호스트로 전송할 수 있습니다. DEBUG 출력을 방지하려면 프로젝트를 Windows 응용 프로그램으로 컴파일해야 합니다.
5.- (선택 사항) 기본적으로 setup.ps1 스크립트는 IIS에 lawlbits라는 새 웹 사이트를 생성하며 기본 HTTP 포트(80/TCP)에서 수신 대기합니다. 이 새 웹 사이트는 TLS를 통한 HTTP를 사용하지 않으며, C# 에이전트가 C2로 보내는 요청의 내용이 사전 공유되고 무작위로 생성된 비밀 키로 RC4 암호화되기는 하지만, 새 사이트에 HTTPS를 설정하는 것이 좋습니다. 이를 위해 Let's Encrypt를 lawlbits에 사용하는 것을 권장합니다. 이는 HTTPS를 설정하는 가장 쉬운 방법 중 하나입니다. 그 후, Program.cs의 Url 변수를 기본값인 HTTP 대신 HTTPS를 사용하도록 수정해야 합니다.
리버스 셸을 얻으려면 C2 서버의 명령 프롬프트에서 python lawlbin.py를 입력하고 손상된 호스트에서 C# 에이전트를 실행하면 됩니다.
이 프로젝트는 이전에 실패한 프로젝트의 잔재에서 탄생했기 때문에 일부 이전 기능이 유지되었습니다. 이전 프로젝트는 사용 가능한 모든 명령을 Living of The Land Binaries만을 사용하여 실행하는 셸이었습니다. 이것이 LOLBITS의 LOL이 유래된 곳이며, 다음 기능은 LOLBINS만을 사용하여 실행됩니다(AWS 및 일부 AV/EDR 필터를 우회하는 데 도움이 될 수 있음):
이러한 기능은 일부 환경에서 흥미로울 수 있지만(Powershell을 사용하지 않고 원격 파일 다운로드? 좋습니다!), C2 콘솔용 이전 코드 일부를 재사용하기 위해 유지했습니다. 아래는 클래식 레드 팀 환경에서 더 유용할 몇 가지 다른 기능 목록입니다:
사용 팁을 보려면 help 또는 <somecommand> help를 입력하면 됩니다.
어떤 기여든 크게 감사드립니다.
git checkout -b feature/AmazingFeature).git commit -m 'Add some AmazingFeature').git push origin feature/AmazingFeature).GNU 라이선스에 따라 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.