HardHat C2
C#로 작성된 크로스 플랫폼 협업형 커맨드 앤 컨트롤(C2) 프레임워크로, 레드팀 작업과 사용 편의성을 위해 설계되었습니다

HardHat은 다중 사용자 C# .NET 기반 커맨드 앤 컨트롤(C2) 프레임워크로, 레드팀 업무와 침투 테스트를 지원하기 위해 설계되었습니다. 강력하고 사용하기 쉬운 C2 프레임워크를 제공하여 업무 중 삶의 질을 향상시키는 것을 목표로 합니다.
HardHat은 세 가지 주요 구성 요소로 이루어져 있습니다:
- ASP.NET 팀서버
- Blazor .NET 클라이언트
- 내장 C# 기반 임플란트
- 다른 언어로 된 서드파티 임플란트 지원
전체 문서는 https://docs.hardhat-c2.net/에서 확인할 수 있습니다.
참고: HardHat은 알파 릴리스입니다. 버그, 누락된 기능, 예상치 못한 문제가 발생할 수 있습니다. 사용해 주셔서 감사드리며, 발견된 문제나 누락된 기능은 보고해 주시기 바랍니다.
커뮤니티
HardHat C2, 프로그래밍, 레드팀, 일반 사이버 보안 주제에 대해 논의하려면 Discord 커뮤니티에 가입하세요. 도움을 요청하거나 버그 및 새로운 기능을 제출하고 최신 추가 사항을 확인하기에도 좋은 장소입니다.
코드 기여는 언제든지 환영합니다! 기능 요청, 풀 리퀘스트를 제출하거나 Discord를 통해 아이디어를 보내주세요.
기능
사용자 정의 자산 지원
- 자산은 팀 서버와 클라이언트용 임플란트 및 관련 플러그인입니다.
사용 가능한 자산을 확인하고 더 많은 자산을 만드는 방법을 알아보려면 HardHat Toolbox를 확인하세요.
팀서버 및 클라이언트
- 역할 기반 접근 제어(RBAC)가 적용된 개별 운영자 계정
- 계정 개인화 허용
- 특정 기능에 대한 제한된 접근 허용 (예: 보기 전용 게스트 역할, 팀 리더의 OPSEC 승인 (WIP))
- 매니저(리스너)
- 동적 페이로드 생성 (EXE, DLL, 셸코드, PowerShell 명령)
- 클라이언트에서 C2 프로필 실시간 생성 및 편집
- 페이로드 생성 사용자 정의
- 대기 시간/지터
- 종료 날짜
- 작업 시간
- 유형 (EXE, DLL, 셸코드, PowerShell 명령)
- 포함 명령 (WIP)
- ConfuserEx 실행 옵션
- 파일 업로드 및 다운로드
- 그래프 보기
- 파일 브라우저 GUI
- 이벤트 로그
- 이벤트 및 작업에 대한 JSON 로깅
- 전리품 추적
- 침해 지표(IOC) 추적
- 피벗 프록시 (SOCKS 4a, 포트 포워딩)
- 자격 증명 저장소
- 자동 완성 명령 기록
- 상세 도움말 명령
- 클라이언트가 Linux인 경우 대화형 bash 터미널, Windows인 경우 PowerShell
- proxychains와 같은 터미널 명령 자동 파싱 및 로깅 허용
- 팀 서버 항목의 영구 데이터베이스 저장소 (사용자 계정, 매니저, 엔지니어, 이벤트, 작업, 자격 증명, 다운로드, 업로드 등)
- 정찰 엔터티 추적 (사용자/장치 정보, 필요한 경우 임의 메타데이터 추적)
- 일부 명령에 대한 공유 파일 (자세한 내용은 팀서버 페이지 참조)
- 명령 실행을 위한 탭 기반 상호작용 창
- 일부 명령(
ls, ps 등)에 대한 테이블 기반 출력 옵션
- Seatbelt 출력을 자동 파싱하여 "정찰 엔터티" 생성, 편리한 참조 제공
- 다크 테마 및 라이트 🤮 테마

엔지니어
- Windows 장치용 C# .NET 프레임워크 임플란트 (현재 CLR/.NET 4만 지원)
- 현재는 하나의 임플란트만 있지만, 추가할 예정입니다
- EXE, DLL, 셸코드 또는 PowerShell 스테이저로 생성 가능
- 대기 시 페이로드 메모리 및 힙에 RC4 암호화 (EXE / DLL만 해당)
- 모든 네트워크 통신에 AES 암호화
- 난독화를 위한 ConfuserEx 통합
- HTTP, HTTPS, TCP, SMB 통신
- TCP 및 SMB는 바인드 또는 리버스 구성에서 피어투피어(P2P)로 작동 가능
- 컴파일 시 생성되는 각 임플란트별 고유 키
- C2 프로필에 따른 여러 콜백 URI
- Windows API 호출을 위한 P/Invoke 및 D/Invoke 통합
- SOCKS 4a 지원
- 리버스 포트 포워드 및 포트 포워드
- 모든 명령은 비동기적으로 실행되며 취소 가능한 작업으로 실행
- 인라인 어셈블리 실행 및 인라인 셸코드 실행
- DLL 인젝션
- 어셈블리 실행 및 Mimikatz 통합
- Mimikatz는 임플란트에 내장되어 있지 않지만 특정 명령이 실행될 때 푸시됩니다
- 다양한 로컬 및 네트워크 열거 도구
- 토큰 조작 명령
- 측면 이동 명령
- 점프 (psexec, wmi, wmi-ps, winrm, dcom)
- 원격 실행 (WIP)
- AMSI(안티맬웨어 검사 인터페이스) 및 ETW(Windows용 이벤트 추적) 패치
- 관리되지 않는 PowerShell
- 스크립트 저장소로 여러 스크립트를 한 번에 로드 가능
- 스폰 및 인젝트
- 실행, execute 및 shell

시작하기
설치
Docker
- Docker 및 Docker Compose 설치
docker compose up -d 실행
- 선택적으로
HARDHAT_ADMIN_USERNAME 및/또는 HARDHAT_ADMIN_PASSWORD를 환경 변수로 제공할 수 있으며, 생략하면 기본 관리자 사용자 이름과 무작위로 생성된 비밀번호가 첫 실행 시 팀서버 로그에 기록됩니다
- 브라우저에서 https://localhost:7096/으로 이동
수동 설치
- Microsoft에서 .NET 7 SDK 설치
.\TeamServer 디렉토리에서 dotnet run을 실행하여 팀서버를 빌드하고 시작
HardHatC2Client 디렉토리에서 dotnet run https://<TEAMSERVER_HOST>:<TEAMSERVER_PORT> 실행
- 예를 들어, 팀서버가 동일한 호스트와 기본 포트에서 실행 중인 경우:
dotnet run https://127.0.0.1:5000
- 브라우저에서 https://localhost:7096/으로 이동
팀서버의 수신 주소(클라이언트가 연결할 주소)를 구성하려면 .\TeamServer\Properties\LaunchSettings.json을 편집하고 "applicationUrl": "https://127.0.0.1:5000"을 원하는 위치와 포트로 변경하세요.
설정
- 팀서버가 환경 변수로 설정했거나 STDOUT에 출력한 사용자 이름과 비밀번호를 사용하여 클라이언트 웹 UI에 로그인
- 설정 페이지로 이동하여 새 사용자 계정 생성
- 성공 시 메시지가 나타납니다. 그런 다음 해당 계정으로 로그인하여 전체 클라이언트에 접근할 수 있습니다
릴리스 추적
- 알파 0.2 릴리스 - 2023년 7월 6일
- 알파 릴리스 - 2023년 3월 29일