Alan Framework
Alan Framework는 레드팀 활동 중 유용한 포스트 익스플로잇 프레임워크입니다.
이 도구가 유용하다면, 후원을 고려해 주세요.
⚠⚠⚠ 고지 사항 ⚠⚠⚠
이러한 종류의 소프트웨어를 만드는 것은 항상 논란을 불러일으켜 왔습니다. 제가 이 도구를 만들기로 결정한 이유가 궁금하시다면, 그것은 궁극적인 학습 경험은 배운 것을 구현하는 것이라고 확신하기 때문입니다. 리버스 엔지니어링 과정에서 많은 작은 세부 사항이 간과됩니다. 이런 세부 사항들이 조금씩 쌓이면 연구자가 전체적인 그림을 파악하지 못하게 됩니다. 마지막으로, 저는 무엇보다 프로그래머이며, 이런 종류의 프로그램을 개발하는 것을 좋아합니다 😄
다운로드
Alan C2 Framework 다운로드
주요 기능
- 선호하는 도구를 메모리에서 직접 실행할 수 있습니다.
- JavaScript 스크립트 실행 (메모리 내에서 타사 종속성 없음)
- 완벽히 호환되는 SOCKS5 프록시
- 지원되는 에이전트 유형: Powershell (x86/x64), DLL (x86/x64), 실행 파일 (x86/x64), Shellcode (x86/x64)
- Server.exe는 Linux에서 실행 가능 (dotnet core 이용)
- 네트워크 통신은 에이전트 바이너리나 트래픽 덤프에서 복구할 수 없는 세션 키로 완전히 암호화됩니다.
- HTTP/HTTPS를 통한 통신
- 외부 종속성이나 라이브러리를 설치할 필요가 없습니다.
- 강력한 명령 셸
- 에이전트 구성을 실시간으로 업데이트할 수 있습니다 (포트와 프로토콜도 변경 가능)
문서:
블로그 게시물
사용법에 대한 자세한 내용은 문서를 참조하세요.
소스 코드 컴파일
_Alan_을 컴파일하려면 다음 작업을 수행해야 합니다.
- cmake가 설치되어 있고 PATH에 있는지 확인하세요 (작동 여부를 확인하려면 cmake --help 실행)
- Visual Studio 2022 설치 (커뮤니티 에디션도 괜찮습니다). 이 단계는 VS 2022 17.3.1 버전에서 테스트되었습니다.
- Visual Studio 제품군의 일부로 .NET 데스크톱 개발, C++를 사용한 데스크톱 개발 및 F# 언어가 설치되어 있는지 확인하세요.
- 다음을 실행하여 .NET 라이브러리 설치: ./src/server/paket.exe install
- Visual Studio에서 .src/server/ServerSln.sln 파일을 엽니다. ServerBuilder 프로젝트를 시작 프로젝트로 설정합니다 (우클릭 -> 시작 프로젝트로 설정)
- ServerBuilder를 실행하면 모든 것이 컴파일됩니다.
- 컴파일이 성공적으로 완료되면 새로 생성된 Misc/out/release 디렉터리에 Alan .zip 파일이 위치합니다.
비디오:
데모 영상
Alan v7.0.514.10 - SOCKS5 Proxy  | Alan v6.0.511.28 - JS Execution  | Alan v5.0.509.20 - In-Memory Execution  |
|---|
Alan v4.0.0 - x64 Agent && Inject  | Alan v3.0.0 - Misc Commands  | Alan v2.0.500.23  |
Alan v1.0.0  | | |
변경 로그
v7.0.514.10 - 15/05/2022
- 피보팅을 위한
proxy 명령어 구현
info 및 info++ 명령어가 에이전트가 프록시를 사용 중인지 표시
- 네트워크 통신 버그 수정 (이슈 2)
- 함수가 서수로 가져와질 때 PE 로더 오류 수정
- 메모리 조기 해제를 유발하는 JS 모듈 오류 수정
run 명령어에서 & 옵션이 작동하지 않는 오류 수정
- 로그 메시지가 이제
alan.log 파일에 저장됨
- 생성된 모든 출력과 사용자 입력이
evidences 폴더 내 증거 파일에 기록됨
info 명령어에 머신 ID 정보 추가
- 에이전트 생성을 위한
Vanilla 패키지 유형 추가. 사용자 정의 패커의 통합을 개선합니다.
v6.0.511.28 24/02/2022
- x86/x64 PE 로더가 PEB->Ldr 필드를 업데이트하도록 수정. 이를 통해 시스템이 주입된 DLL에서 DLL_PROCESS_DETACH를 호출할 수 있습니다.
- 최대 응답 크기를 1GB로 증가. 큰 파일 다운로드 문제 수정.
- 구성에 에이전트 만료 날짜 추가.
run 명령어가 JavaScript 파일 실행을 지원하도록 확장됨.
info++ 명령어가 이제 볼륨 레이블과 파일 시스템 유형을 표시합니다.
v5.0.509.20 - 13/12/2021
run 명령어 구현
kill 명령어 구현
exec 명령어 구현
inject 메시지 제거 (백그라운드에서 run 명령어로 대체 가능)
- 에이전트를 더 은밀하게 만들기 위해 스테이저 및 PE 로더 생성. 생성된 각 에이전트 파일은 서로 다른 해시를 가짐
- 동적 코드 정책 완화를 우회하기 위한 코드 주입 개선
- 마법사 중 생성할 에이전트 파일 이름 지정 가능
upload 및 download 명령어 오류 수정
- 셸 생성 오류 수정. 명령 셸 프로세스 토큰이 동일한 에이전트 무결성 수준을 가지지 않음
- DLL 에이전트 아티팩트에서 내보낸 함수 제거
info 명령어에 현재 작업 디렉터리 추가
shell 명령어를 단일 명령어 실행으로 확장
v4.0.0 - 26/09/2021
inject 명령어 추가. 이 명령어를 통해 운영자는 원격 프로세스에 코드를 주입할 수 있습니다.
sleep 명령어 추가, 각각 400msec의 짧은 절전으로 수행됨.
sleep에 지터(Jitter) 개념 도입
- 에이전트를 x64 비트로 포팅 (PE32+ 로더 포함)
- x86 PE 로더 오류 수정
- .NET 에이전트 실행기가 더 은밀한 방식으로 실행되어 탐지를 피함
- HTTP/S 리스너 응답에서 사용자 정의 웹 서버 지정 가능
- 불필요한
listeners 명령어 제거
info 명령어 개선 (더 많은 정보 추가)
- 오류 메시지가 더 설명적으로 개선됨
- 프로세스 토큰 유형 (상승 여부) 정보 추가
- 프로세스 토큰 권한 정보 추가
- 프로세스 토큰 그룹 정보 추가
v3.0.0 - 15/05/2021
- 에이전트 셸
quit 명령어를 exit로 이름 변경
migrate 명령어를 통한 에이전트 마이그레이션 구현
- OS 버전 검색 오류 수정
- 생성 마법사에 에이전트 형식으로 DLL 추가.
- 현재 실행 중인 프로세스를 나열하는
ps 명령어 구현
- 파일 또는 전체 디렉터리를 로컬로 다운로드하는
download 명령어 구현
- 손상된 호스트에 파일을 업로드하는
upload 명령어 구현
- HTTP/s 리스너 응답을 사용자 정의하기 위한 HTTP 서버 응답 옵션
SuccessRequest 구현
- 잘못된 요청에 대한 HTTP/s 리스너 응답을 사용자 정의하기 위한
ErrorRequest 구현
- 에이전트 프로필에서 HTTP 서버 요청 옵션으로
prepend 및 append 구현
v2.0.500.23 - 20/03/2021
- 에이전트
detach 명령어 구현 (참여한 에이전트에서 임시로 나가기)
- 셸
detach 명령어 구현 (명령 셸에서 임시로 나가기)
- 사용 가능한 리스너를 나열하는
listeners 명령어 구현
- TLS를 통해 에이전트와 통신하는 HTTPS 리스너 구현
- 현재 에이전트 구성을 다운로드하는
get-config 명령어 구현
- 에이전트 구성을 업데이트하는
update 명령어 구현
- Windows7 지원
v1.0.0 - 22/02/2021