
icmptunnel
icmptunnel은 ICMP 에코 요청 및 응답(ping) 패킷으로 IP 트래픽을 터널링하는 도구입니다. 핑이 허용된 네트워크 내부에서 피벗할 때처럼 반은밀한 방식으로 방화벽을 우회하기 위한 것입니다. 또한 기업 네트워크에서 인터넷으로의 이그레스에 유용할 수 있지만, ICMP 에코 트래픽이 네트워크 경계에서 필터링되는 경우가 흔합니다.
이 기법을 구현하는 기존 도구도 몇 가지 있지만, icmptunnel은 상태 저장 방화벽과 NAT를 통과하는 터널링을 위한 더 신뢰할 수 있는 프로토콜과 메커니즘을 제공합니다.
이 도구는 컴파일과 설치에 일반 Makefile을 사용합니다.
make를 사용하여 icmptunnel을 컴파일하세요.
먼저 클라이언트와 서버 양쪽에서 ICMP 에코 응답을 비활성화합니다. 그러면 커널이 ping 패킷에 직접 응답하지 않습니다.
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
서버 측에서는 서버 모드로 icmptunnel을 시작하고 새 터널 인터페이스에 IP 주소를 할당합니다.
# ./icmptunnel –s
opened tunnel device: tun0
(ctrl-z)
# bg
# /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
클라이언트 측에서는 icmptunnel이 서버를 가리키도록 하고 IP 주소를 할당합니다.
# ./icmptunnel <server>
opened tunnel device: tun0
connection established.
(ctrl-z)
# bg
# /sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0
이 시점에서 ICMP 패킷을 통한 기능하는 지점 간(point-to-point) 터널이 준비되어 있어야 합니다. 서버 측은 10.0.0.1이고 클라이언트 측은 10.0.0.2입니다. 클라이언트에서 SSH를 통해 서버에 연결해 보세요:
# ssh [email protected]
Password:
원격 서버를 암호화된 SOCKS 프록시로 사용하려면:
# ssh -D 8080 -N [email protected]
Password:
이제 웹 브라우저가 로컬 SOCKS 서버를 가리키게 하세요.
옵션 목록은 ./icmptunnel -h를 참조하세요.
버그는 다음 Github 프로젝트 페이지에 신고해 주세요: