BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
2025-12-23 / 레드팀인프라구축 · 04
C2 서버 구축과 Sliver
1. Sliver C2 프레임워크 개요
Sliver는 Golang으로 만든 오픈소스 크로스 플랫폼 C2 프레임워크다. Cobalt Strike의 대안으로 자주 언급되며, 바이너리 난독화와 네트워크 우회 쪽 장점이 크다.
C2 서버는 리다이렉터 뒤에 숨어 있으므로, 기본적으로는 리다이렉터를 통해 들어온 트래픽만 처리하게 된다.
2. 환경 구축(Golang & 의존성)
Sliver를 소스코드 레벨에서 수정하고 컴파일하기 위해 특정 버전의 Go 언어 환경이 필요하다.
2.1. GVM(Go Version Manager)을 이용한 설치
Ubuntu 기본 리포지토리의 Go 버전은 호환 문제가 있을 수 있어서, GVM을 쓰는 편이 안전하다.
sudo apt install -y git build-essential mingw-w64 binutils-mingw-w64 g++-mingw-w64 bison
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source /root/.gvm/scripts/gvm
gvm install go1.20.7 -B
gvm use go1.20.7 --default
3. 정적 분석 우회(Static Evasion)
오픈소스 C2의 약점은 시그니처(Signature)가 이미 널리 알려져 있다는 점이다. 그래서 소스코드를 무작위로 바꿔 해시값과 내부 문자열을 계속 달라지게 만드는 작업이 필요하다.
3.1. 소스코드 수정 및 컴파일 절차
절차는 아래 순서로 보면 된다.
- 소스를 내려받는다.
git clone https://github.com/BishopFox/sliver.git /opt/sliver
cd /opt/sliver
git checkout tags/v1.5.43
- 난독화 스크립트(
mod_sliver.py)를 실행한다.
- 역할: 함수명, 변수명, 로고 아스키 아트, 에러 메시지 등을 무작위 문자열로 바꾼다.
- 결과: 빌드할 때마다 다른 시그니처의 바이너리가 만들어져 백신의 정적 탐지를 피하기 쉬워진다.
python3 mod_sliver.py
- 최종 컴파일한다.
make pb
make
4. Malleable C2 와 네트워크 우회
Malleable C2는 C2 통신 트래픽의 모형(Profile)을 바꾸는 기능이다. 기본 트래픽은 특정 헤더나 확장자 같은 패턴이 눈에 띄는데, 이 부분을 손봐서 일반 웹 트래픽처럼 보이게 만든다.
맞춰야 할 포인트는 아래와 같다.
- 설정 파일:
sliver-server/assets/profiles/http-c2.json(경로는 다를 수 있음)을 수정하거나 새로 불러온다.
- 동기화: 앞서 설정한 Redirector(Nginx) 규칙과 완전히 같아야 한다.
- URL 경로(예:
/login.php, /static/jquery.js)
- User-Agent 문자열
- HTTP 헤더 및 쿠키 포맷
5. 서버 실행 및 리스너 설정
서버를 올릴 때는 아래 순서로 진행한다.
- 서버를 실행한다.
./sliver-server를 쓰며 관리자 권한이 필요할 수 있다.
- 리스너를 연다. 리다이렉터를 통해 들어오는 HTTPS 트래픽을 받을 포트다.
sliver > https --lport 443
- Operator 설정(Multiplayer Mode)을 만든다.
- 로컬에서 직접 작업하지 않고, 오퍼레이터 접속용 프로필을 생성한다.
sliver > new-operator --name choi --lhost [C2_Public_IP]
- 생성된
.cfg 파일은 오퍼레이터 서버로 옮겨서 사용한다.