OSI 7 Layer과 Pivoting Tool
| # | 계층 | 프로토콜/단위 | 주소 체계 | Tool |
|---|---|---|---|---|
| L7 | Application | HTTP, DNS, SSH, FTP, SMB | - | Chisel, SSH, Sshuttle |
| L6 | Presentation | TLS/SSL, 암호화, 인코딩, 문자셋 | - | |
| L5 | Session | 세션 수립,유지 (SOCKS5) | - | proxychains |
| L4 | Transport | TCP(세그먼트), UDP(데이터그램) | 포트 번호 | chisel(data), SSH(data), sshuttle(TCP data) |
| L3 | Network | IP, ICMP 라우팅 (단위 : 패킷) | IP 주소 | VPN, Ligolo, sshuttle(가로채기) |
| L2 | Data | 이더넷, ARP, MAC, 스위치 (단위 : 프레임) | MAC 주소 | |
| L1 | Physical | 케이블, 전기신호, 광신호 | - |
- Pivoting Tool이 낮은 계층에서 동작할 수록, 더 많은 종류의 트래픽을 넘길 수 있고, 높은 계층으로 갈수록 넘기는 트래픽 종류의 한계가 생김
Tool 계층별 매핑
| Tool | Carrier (캡슐화 프로토콜) | 가로채는 지점 - payload | ICMP | UDP | proxychains |
|---|---|---|---|---|---|
| Ligolo | 자체 프로토콜 | L3 - IP 패킷 | 가능 | 가능 | 불필요 |
| Sshuttle | SSH (L7) | L3 - TCP, DNS | X | X | 불필요 |
| Chisel | HTTP/WebSocket(L7) | L4 (TCP 스트림) | X | 제한적 | SOCKS모드만 |
| SSH | SSH (L7) | L4/L5 - TCP스트림 | X | X | -D모드만 |
sshuttle은--dns로 DNS(UDP 53)만 예외적으로 터널링
| Tool | 장점 | 단점 |
|---|---|---|
| Ligolo | 1. TCP, UDP, ping 모두 가능 2. 호스트가 많아지거나, 멀티홉(더블 피벗)도 깔끔하게 관리 가능 | 1. kali tun 인터페이스 생성 및 라우팅 설정이 필요 2. agent 바이너리를 실행해야 하므로 탐지 위험성 증가 |
| SSH | 1. SSH연결만 되면, 추가적인 바이너리 없이 포워딩 설정이 가능함 2. 탐지 가능성 낮음 (SSH 기본 기능) | 1. ICMP, UDP 지원하지 않음 2. SSH 연결이 필요함(계정 크리덴셜 필요) |
| Chisel | 1. 방화벽(Outbound 트래픽) 우회에 강함 | 1. ICMP, UDP 지원하지 않음 (UDP 제한적 지원) 2. chisel 바이너리 실행 필요 3. 멀티홉(더블 피벗) 복잡해짐 |
| Sshuttle | 1. SSH 연결 및 대상에 파이썬만 있으면 동작 2. 탐지 가능성 낮음 (SSH 기본 기능 + 파이썬 스크립트) 3. TCP 통신의 경우 proxychains 없이도 완벽히 동작 | 1. ICMP, UDP 지원하지 않음 2. 대상에 Python 필요 3. 멀티홉(더블 피벗) 복잡해짐 |
#1. Ligolo (L3 Network)
- 가상 네트워크 인터페이스(tun)을 만듦. IP 패킷을 통째로 잡아서 터널로 전송
- IP 위에 얹힌건 뭐든 넘길 수 있음. TCP, UDP, ICMP 등..
- 대상 호스트에서
agent를 실행하고, Kali에서 tun인터페이스 + 라우팅을 설정 해야함
#2. chisel (L7 - HTTP로 통신, L4 - TCP 스트림 전송)
- chisel은 HTTP 레이어로 통신. 전달하는 데이터는 TCP
- WinRM이 HTTP로 통신하는것과 동일한 원리
- chisel server를 열고, nmap을 localhost로 돌리면 chisel 포트가 http로 노출되는 것을 알 수 있다.
- chisel은 방화벽 우회에 장점이 있다 (chisel의 HTTP 핸드셰이크 방식)
- Outbound 규칙은 포트 80/443으로 연결하며 허용
- 실제 HTTP 트래픽인지 확인하는 DPI(Deep Packet Inspection) 방화벽은 chisel이 WebSocket(HTTP 기반) 으로 동작하기 때문에 통과
#3. SSH (L7 - ssh로 통신, L4 - TCP 스트림 전송)
- SSH 기본 포트포워딩 기능을 활용
- TCP 스트림으로 전송하므로, ICMP, UDP 패킷 전송 불가
- 동적 포트포워딩시 L5 수준,
connect()를 후킹하므로, proxychains와 결합이 필요함
#4. Sshuttle (L7 - ssh로 통신, L4 - TCP 스트림 전송)
- sshuttle이 SSH로 접속한 뒤, 원격에 파이썬 코드를 실시간으로 밀어넣어 그쪽에서 프록시 역할을 하게 만듦.
- Dynamic 포트포워딩에서도 proxychains가 필요없음
- 하지만 페이로드 자체는 모두 TCP (+ DNS) 이므로, ICMP, UDP는 불가.