
Firecat is a penetration testing tool that allows you to punch reverse TCP tunnels out of a compromised network.
자세한 내용은 다음을 참조하십시오:
http://www.bishopfox.com/resources/tools/other-free-tools/firecat/
Firecat은 손상된 네트워크에서 역방향 TCP 터널을 뚫을 수 있게 해주는 침투 테스트 도구입니다. 터널이 설정된 후에는 외부 호스트에서 손상된 네트워크 내부의 모든 시스템의 모든 포트에 연결할 수 있으며, 네트워크가 NAT 게이트웨이 및/또는 엄격한 방화벽 뒤에 있더라도 가능합니다. 이는 손상된 웹 서버의 NAT 처리된 내부 IP 주소(예: 192.168.1.10)에 대한 원격 데스크톱 액세스를 확보하는 등 다양한 목적에 유용할 수 있습니다.
Firecat은 C로 작성되었으며 Linux, Solaris, iOS, Mac OS X 및 Windows XP/Vista/2k/2k3/2k8에서 테스트되었습니다.
MinGW를 사용하여 Windows에서 컴파일하려면:
gcc –o firecat.exe firecat.c –lwsock32
Unix에서 컴파일하려면:
gcc –o firecat firecat.c
약 10년 전으로 돌아가 보면, 인터넷으로부터 제대로(또는 전혀) 방화벽으로 보호되지 않은 호스트를 흔히 찾아볼 수 있었던 때였습니다. 호스트를 손상시키고 포트에 셸코드를 바인딩한 다음 netcat이나 다른 도구를 사용해 대화형 명령줄 제어권을 확보할 수 있었습니다.
요즘은 상황이 다릅니다. 호스트로 향하는 TCP/IP 패킷이 수신 방화벽 규칙에 의해 엄격하게 필터링되는 경우가 많습니다. 또한 대상 호스트가 NAT 게이트웨이 뒤에 위치하여 상황이 더욱 복잡해지는 경우도 흔합니다:
엄격한 방화벽 규칙은 대상 환경의 공격 표면을 줄여 주지만, SQL 인젝션과 같은 공격은 가장 엄격하게 방화벽으로 보호되는 서버에서도 임의 코드를 실행할 수 있게 만듭니다. 그러나 컨설턴트가 방화벽을 제어하고 규칙 집합을 변경할 수 없다면, 방화벽이 허용하는 내부 네트워크 서비스 외에는 직접 연결하는 것이 불가능합니다.
바로 여기서 Firecat이发挥作用합니다. DMZ에 있는 호스트에서 명령을 실행할 수 있고, 해당 호스트가 컨설턴트의 컴퓨터로 아웃바운드 TCP/IP 연결을 시작할 수 있다고 가정하면, Firecat을 통해 컨설턴트는 대상 호스트의 모든 포트에 연결할 수 있으며, 종종 DMZ 내부의 모든 호스트의 모든 포트에도 연결할 수 있습니다. 이는 방화벽을 통과하는 역방향 TCP 터널을 만들고, 그 터널을 사용하여 컨설턴트와 대상 환경의 호스트 간 임의의 TCP 연결을 중개함으로써 수행됩니다. DMZ 네트워크로 임의의 TCP/IP 터널을 만드는 것 외에도, 웹 서버나 SQL 서버와 같은 손상된 DMZ 호스트에서 커넥트백(connect-back) 셸을 띄우는 데에도 사용할 수 있습니다.
이것이 작동하는 이유는 대상 시스템이 TCP 연결을 컨설턴트에게 먼저 시작하기 때문이며, 그 반대가 아닙니다. Firecat은 대상에서 "target" 모드로 실행되고, 컨설턴트의 시스템에서는 "consultant" 모드로 실행되어 두 엔드포인트 사이에 터널을 효과적으로 만듭니다. 터널이 설정되면 컨설턴트는 로컬 Firecat 데몬에 연결하고, 이 데몬은 원격 Firecat 데몬에게 방화벽 뒤의 원하는 호스트/포트로 연결을 시작하도록 지시합니다. 그런 다음 두 Firecat 데몬은 컨설턴트와 대상 간의 데이터를 터널링하여 두 시스템 사이에 끊김 없는 투명한 브리지를 만듭니다. 따라서 방화벽 규칙을 완전히 우회합니다. Firecat은 NAT 방화벽 뒤에 있는 호스트에서도 작동합니다.
논리적 단계로 나누고 다이어그램의 IP 주소를 사용하면 프로세스는 다음과 같이 작동합니다: