**Tor(The Onion Router)**는 트래픽을 여러 중계 서버를 통해 여러 겹으로 암호화하여 익명성을 제공하는 분산형 프록시 네트워크입니다.
📌 출발지 IP가 보이지 않음 → 익명성 확보
torsocks는 Tor를 SOCKS 프록시로 사용하는 환경에서, 일반 프로그램 트래픽을 Tor 네트워크로 우회하게 하는 툴입니다.
즉,
torsocks는 명령어 앞에 붙여서 그 프로세스의 모든 트래픽을 Tor로 우회시킴.
torsocks <명령어>
127.0.0.1:9050 (기본 Tor 클라이언트 포트)torsocks curl http://example.com
흐름:
[명령어] → torsocks 라이브러리 → Tor SOCKS Proxy → Tor Entry Node → Relay Node → Exit Node → 실제 서버
torsocks는 LD_PRELOAD로 네트워크 함수(connect(), send(), 등)를 가로채서 모든 연결을 Tor 프록시로 전환시킴.
apt update && apt install tor torsocks -y
service tor start
또는 수동:
tor &
curl 익명 접속torsocks curl http://check.torproject.org/
응답에 "Congratulations. This browser is configured to use Tor" 메시지 뜨면 성공.
nmap (주의: TCP scan만 가능)torsocks nmap -sT -Pn -p 80 10.10.10.10
🔥
-sS(SYN 스캔)은 비TCP 기반이라 Tor에서 불가능
ffuftorsocks ffuf -u http://10.10.10.10/FUZZ -w /usr/share/wordlists/dirb/common.txt -t 10
wgettorsocks wget http://example.com
ssh 접속torsocks ssh user@target.onion
(단, SSH 데몬이 onion 주소에서 listen 하고 있어야 함)
| 목적 | 명령어 예시 |
|---|---|
| 익명 브루트포스 | torsocks hydra -L users.txt -P pass.txt ssh://10.10.10.10 |
| 웹 디렉터리 발견 | torsocks gobuster dir -u http://10.10.10.10 -w wordlist.txt |
| 서브도메인 fuzz | torsocks ffuf -H "Host: FUZZ.site.htb" -u http://10.10.10.10 -w dns.txt |
| 일반 요청 은폐 | torsocks curl http://site.com |
| IP 차단 회피 | 여러 Tor 회선 바꿔가며 brute-force 가능 |
ffuf, hydra 등은 -t 값을 낮게nmap -sU, ping 등은 동작 안 함torsocks 오류는 조용히 무시되므로 출력 잘 체크해야 함/var/log/tor나 로그 저장 설정 확인 필요torsocks curl ifconfig.me
service tor restart
또는 kill -HUP $(pidof tor)로 재랜덤화 가능
| 항목 | 내용 |
|---|---|
| Tor | Onion 암호화된 다단계 우회 네트워크 |
| torsocks | 일반 프로그램을 Tor 네트워크로 우회시킴 |
| 트래픽 방식 | TCP only, SOCKS5 방식 |
| 사용 예시 | curl, nmap -sT, ffuf, wget, ssh 등 |
| 설치 | apt install tor torsocks |
| 주의 | 속도 느림, -t 낮게, 출력 항상 검토 |
좋습니다. 요청하신 세 가지를 각각 기술적으로 깊이 있게 설명드리겠습니다.
OSCP 스타일로 수동 이해와 원리 중심으로 설명하겠습니다.
torsocks는 LD_PRELOAD 메커니즘을 활용해 프로그램이 호출하는 네트워크 함수(connect(), getaddrinfo(), 등)를 가로채서 트래픽을 Tor로 우회합니다.
| 구성요소 | 설명 |
|---|---|
libtorsocks.so | 실제 네트워크 함수를 후킹하는 공유 라이브러리 |
torsocks 실행파일 | 명령어 실행 시 LD_PRELOAD 환경을 설정 |
tor | 백그라운드에서 SOCKS5 프록시 역할 (127.0.0.1:9050) |
torsocks curl http://site.com)1. curl 실행 시, torsocks가 LD_PRELOAD로 libtorsocks.so를 로드
2. curl이 connect() → getaddrinfo() → send() 호출할 때,
3. libtorsocks가 이를 가로채어 SOCKS5 연결 생성
4. 트래픽은 Tor를 통해 우회되어 목적지 도달
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int getaddrinfo(const char *node, const char *service, ...);
이 함수들이 libtorsocks.so 내부에서 재정의됨. 예시:
int connect(...) {
// 원래 connect 호출 전
// SOCKS5 handshake 수행
// 대상 주소를 Tor로 라우팅
}
웹 프록시로 BurpSuite를 사용하면서 Tor로 익명 HTTP 요청을 보낼 수 있습니다.
[Browser] → [BurpSuite] → [Tor SOCKS5 proxy (127.0.0.1:9050)] → [Internet]
service tor start
또는:
tor &
Tor는 기본적으로 127.0.0.1:9050에서 SOCKS5 대기
Proxy → Options → Upstream Proxy Servers
*127.0.0.19050SOCKS5브라우저를 Burp 프록시(127.0.0.1:8080)로 설정 → 모든 요청이 Tor를 통해 전송됨
Burp에서 다음 요청 전송:
GET http://check.torproject.org/
응답 내용이 "Congratulations. This browser is configured to use Tor"이면 성공.
proxychains vs torsocks 비교| 항목 | torsocks | proxychains |
|---|---|---|
| 방식 | LD_PRELOAD로 네트워크 함수 후킹 | LD_PRELOAD로 후킹 + /etc/proxychains.conf 참조 |
| 기본 프록시 | SOCKS5 127.0.0.1:9050 | 사용자 지정 프록시 체인 설정 |
| 구성 유연성 | 단일 프록시(Tor 전용에 적합) | 다중 프록시 체인 구성 가능 |
| DNS 우회 | 내부 DNS 요청도 Tor 우회 (O) | DNS 우회하려면 proxy_dns 옵션 필수 |
| 명령 실행 방식 | torsocks <명령어> | proxychains <명령어> |
| 안정성 | Tor 전용에 특화, 단순함 | 설정 유연하지만 충돌 가능성 ↑ |
| 로그 | 거의 없음 | verbose 옵션으로 로깅 가능 |
proxychains nmap -sT -Pn -p 80 10.10.10.10
/etc/proxychains.conf에 다음 설정 필요:strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 127.0.0.1 9050
| 상황 | 추천 툴 |
|---|---|
| Tor로 간단한 익명 실행 | torsocks |
| 다양한 프록시 체인 (SOCKS + HTTP) | proxychains |
| 디버깅이나 로그 분석 | proxychains -q 또는 -f custom.conf |
| OSCP 스타일 과제 (가볍고 수동) | torsocks 추천 |
| 목적 | 도구 | 핵심 |
|---|---|---|
| 일반 Tor 프록시화 | torsocks | 안정적, 단일 Tor용 |
| Burp + Tor 연동 | BurpSuite 설정 | SOCKS5 설정으로 Tor 우회 |
| 다중 프록시 체인 | proxychains | 여러 프록시 체인 설정 가능 |
| 내부 작동 이해 | LD_PRELOAD 후킹 | connect(), send() 후킹 |