SOCKS
Last updated
Was this helpful?
Last updated
Was this helpful?
SOCKS(Socket Secure) 프로토콜은 트래픽이 전달될 때 중간에서 중개자 역할을 합니다. 다른 프록시의 매커니즘과 동일하게 패킷을 수신하는 서버는 클라이언트로부터 전달받는 것이 아니라 프록시 서버로부터 전달받기 때문에 클라이언트의 익명성을 보장합니다. 현재 최신 버전은 SOCKS5이며 이는 암호화 터널링 방식을 사용하여 트래픽을 중계하며 인증 기능과 로깅 기능을 갖추고 있습니다.
SOCKS 프록시와 일반적인 HTTP 프록시의 차이점으로는 동작하는 계층이 다르기 때문에 FTP, POP3 등의 6계층 프로토콜까지도 터널링 할 수 있다는 것입니다.
공격자나 레드팀 입장에서도 SOCKS는 상당히 유용하며 자주 사용되는 프로토콜입니다. 침투 테스트 도중 프록시 서버의 제어권을 탈취하는데 성공하더라도 침투에 사용하는 도구들을 모두 프록시 서버에 옮긴 후 정보 수집 및 후속 공격을 진행하는데는 제한 사항이 있습니다. 하지만 해당 서버를 프록시 서버로 삼는다면 로컬에서 전송하는 데이터를 내부망 호스트까지 도달시킬 수 있기 때문에, 직접적으로 연결이 어려웠던 타겟에 대해서 연결점이 생기게 됩니다.
앞서 언급했던 것과 같이 SOCKS5 프로토콜부터는 인증 기능과 로깅이 추가되었다고 했습니다. 위 명령어에서 disableNoAuth
는 인증을 활성화하며, 인증에 사용할 자격 증명을 입력합니다. enableLogging
은 인증 실패 등과 같은 추가 로그를 콘솔에 보냅니다. 팀 서버가 서비스로 실행 중일 경우 journalctl
명령어를 사용하여 로그를 확인할 수 있습니다.
SOCKS 프록시는 5계층 프로토콜이기 때문에 하위 계층에 대해서 터널링이 불가능합니다. nmap은 기본적으로 ICMP Ping Scan을 하게 되는데, ICMP는 3계층 프로토콜이므로 -Pn
옵션을 통해 핑 탐색을 비활성화 하고 -sT
를 통해 TCP 스캔을 지정해줘야 합니다.