Tor, torsocks

agnusdei·2025년 7월 15일
0

CTF

목록 보기
44/154

✅ 1. Tor란?

🧠 정의:

**Tor(The Onion Router)**는 트래픽을 여러 중계 서버를 통해 여러 겹으로 암호화하여 익명성을 제공하는 분산형 프록시 네트워크입니다.

🔐 원리 요약:

  1. Tor 클라이언트가 3개의 랜덤 중계 노드(Entry → Relay → Exit)를 자동 선택
  2. 패킷은 Onion 암호화 (다중 계층)
  3. 목적지에 도달할 때까지 각 노드는 한 겹만 복호화
  4. 최종 목적지에 가기 전까지 송신자-수신자 IP 관계가 추적되지 않음

📌 출발지 IP가 보이지 않음 → 익명성 확보


✅ 2. torsocks란?

🧠 정의:

torsocksTor를 SOCKS 프록시로 사용하는 환경에서, 일반 프로그램 트래픽을 Tor 네트워크로 우회하게 하는 툴입니다.

즉, torsocks는 명령어 앞에 붙여서 그 프로세스의 모든 트래픽을 Tor로 우회시킴.

torsocks <명령어>

🔍 기본 프록시 설정:

  • SOCKS 포트: 127.0.0.1:9050 (기본 Tor 클라이언트 포트)
  • TCP만 지원 (ICMP, UDP 불가)

✅ 3. 동작 구조 (패킷 흐름)

torsocks curl http://example.com

흐름:

[명령어] → torsocks 라이브러리 → Tor SOCKS Proxy → Tor Entry Node → Relay Node → Exit Node → 실제 서버

torsocksLD_PRELOAD로 네트워크 함수(connect(), send(), 등)를 가로채서 모든 연결을 Tor 프록시로 전환시킴.


✅ 4. 사용법 요약

🔧 설치

apt update && apt install tor torsocks -y

▶️ Tor 실행

service tor start

또는 수동:

tor &

▶️ 사용 예시

1. curl 익명 접속

torsocks curl http://check.torproject.org/

응답에 "Congratulations. This browser is configured to use Tor" 메시지 뜨면 성공.

2. nmap (주의: TCP scan만 가능)

torsocks nmap -sT -Pn -p 80 10.10.10.10

🔥 -sS(SYN 스캔)은 비TCP 기반이라 Tor에서 불가능

3. ffuf

torsocks ffuf -u http://10.10.10.10/FUZZ -w /usr/share/wordlists/dirb/common.txt -t 10

4. wget

torsocks wget http://example.com

5. ssh 접속

torsocks ssh user@target.onion

(단, SSH 데몬이 onion 주소에서 listen 하고 있어야 함)


✅ 실무/해킹/OSCP에서의 활용

목적명령어 예시
익명 브루트포스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
서브도메인 fuzztorsocks ffuf -H "Host: FUZZ.site.htb" -u http://10.10.10.10 -w dns.txt
일반 요청 은폐torsocks curl http://site.com
IP 차단 회피여러 Tor 회선 바꿔가며 brute-force 가능

⚠️ 주의사항

  • 속도 느림: Tor는 지연이 크기 때문에 ffuf, hydra 등은 -t 값을 낮게
  • UDP/ICMP 불가: nmap -sU, ping 등은 동작 안 함
  • 출력 확인 필수: torsocks 오류는 조용히 무시되므로 출력 잘 체크해야 함
  • 로그 안 남도록 하기: /var/log/tor나 로그 저장 설정 확인 필요

✅ 추가 팁

➕ 현재 Tor IP 확인

torsocks curl ifconfig.me

➕ 회선 강제 변경 (Tor 회선 재시작)

service tor restart

또는 kill -HUP $(pidof tor)로 재랜덤화 가능


✅ 요약 정리

항목내용
TorOnion 암호화된 다단계 우회 네트워크
torsocks일반 프로그램을 Tor 네트워크로 우회시킴
트래픽 방식TCP only, SOCKS5 방식
사용 예시curl, nmap -sT, ffuf, wget, ssh 등
설치apt install tor torsocks
주의속도 느림, -t 낮게, 출력 항상 검토

좋습니다. 요청하신 세 가지를 각각 기술적으로 깊이 있게 설명드리겠습니다.
OSCP 스타일로 수동 이해와 원리 중심으로 설명하겠습니다.


✅ 1. torsocks 내부 후킹 구조 및 동작 원리

torsocksLD_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로 라우팅
}

✅ 2. Burp Suite + Tor 연동 방법

웹 프록시로 BurpSuite를 사용하면서 Tor로 익명 HTTP 요청을 보낼 수 있습니다.


📌 구성 목표

[Browser] → [BurpSuite] → [Tor SOCKS5 proxy (127.0.0.1:9050)] → [Internet]

🔧 설정 단계

✅ 1. Tor 백그라운드 실행

service tor start

또는:

tor &

Tor는 기본적으로 127.0.0.1:9050에서 SOCKS5 대기


✅ 2. BurpSuite 설정

Proxy → Options → Upstream Proxy Servers

  1. Add 버튼 클릭
  2. Destination host: *
  3. Proxy host: 127.0.0.1
  4. Port: 9050
  5. Proxy type: SOCKS5
  6. Confirm

✅ 3. 브라우저에서 Burp를 통해 요청

브라우저를 Burp 프록시(127.0.0.1:8080)로 설정 → 모든 요청이 Tor를 통해 전송됨


✅ 4. 확인

Burp에서 다음 요청 전송:

GET http://check.torproject.org/

응답 내용이 "Congratulations. This browser is configured to use Tor"이면 성공.


✅ 3. proxychains vs torsocks 비교

항목torsocksproxychains
방식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 예시

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() 후킹

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글