2009-12-16 6 views
7

퍼지 전략을 실행하여 네트워크 스택, 특히 세 번째 및 네 번째 계층 (네트워크 및 전송)에 스트레스를 가하는 방법은 무엇입니까? 필자는 SPIKE와 같은 fuzzer를 생성하는 프레임 워크를 살펴 보았지만 대부분 응용 프로그램 계층 이상에 초점을 맞추고있는 것으로 보입니다. 거기에 잘 알려진 기술을 저기 레이어 잘 알려진 프로토콜을 퍼지에, 말, TCP는 무엇입니까?네트워크 또는 전송 계층 퍼징

감사합니다.

답변

8

Scapy을 확인하십시오. 그것은 당신이 네트워크 및 전송 레이어에서 모호하게 할 수 있습니다. fuzz 기능은 IP 또는 TCP 계층에서 명시 적으로 지정하지 않은 항목을 모호하게합니다 (각 항목에 개별적으로 적용 할 수 있음). 이것은 무작위로 IP 주소와 포트 쌍을 생성하여 넌센스 패킷을 만들고 보내는 것까지 다양한 능력을 제공합니다.

Fragroute을보고 싶을 수도 있습니다. 이것은 모든 종류의 회피 기술을 사용하여 TCP/IP를 변형 할 수 있지만 네트워크 스택의 숨겨진 버그/취약점을 잠재적으로 공개 할 수 있습니다.

조직이 반대하지 않는 경우 Tor 종료 노드를 설정하고 이로부터 트래픽을 캡처 할 수 있습니다. 올바른 TCP 연결 상태 추적을 테스트하는 데 유용하다는 것을 알았습니다. 연결의 끝은 잘 알려져 있고 변함이 없지만 재미있는 네트워크 혼잡 문제는 물론 다양한 종류의 서버가 있습니다. 그것은 기본적으로 끝없는 소통의 원천입니다. 조직이 잠재적 인 악성 트래픽 출처가 될 수 있다고 판단 할 경우 상위 직위에 확인하십시오 (책임이없는 선례가 있지만). 나는 그것을 실행/집에서 캡쳐하고 그 다음에 pcaps를 가져 와서 그 문제를 해결했다.

3

IP, UDP 또는 TCP를 퍼즈 (fuzz)하려면 루프백을 통해 상위 수준 서비스의 패킷을 읽는 프로세스로 라우팅하고 퍼지하고 전달합니다. 원시 소켓과 통신 할 수있는 드라이버가 필요하며 해당 프로토콜에 대해 해당 RFC가 말하는 것을 읽거나 알아야합니다.

쉬운 방법이 있습니다. Justdelegard가 권장하는 것처럼, 일반적으로 Scapy가 가장 좋은 방법 일 것입니다.

Laurent Gaffié가 Releasing ICMPv4/IP fuzzer prototype을 봅니다. 그가 실수로 pastebin.com에서 more readable 패션으로 재 게시 한 그의 파이썬 코드는 scapy에서 가져 와서 그가 몇 가지 유형의 퍼지 (fuzzing) 유형을 정의하는 몇 가지 방법을 사용합니다. IP 및 ICMP 패킷은 그의 샘플 코드에서 처리됩니다. 그래서, 이것은 당신이 찾고있는 것과 정확히 같게 들립니다.

지금은 Tcl/Expect to do custom automated testing 개의 네트워크를 사용하는 많은 회사가있는 것으로 보입니다. SIP, H.323, layer 2 & 3 개의 프로토콜 등

그래서 Scapy가 당신의 요구를 충족시키지 못하면 Expect를 사용하여 Tcl로 작성된 것을 만들거나 찾을 수 있습니다. 또는 Expect를 사용하여 Python에서 Scapy 및 Tcl의 다른 것들을 사용하여 몇 가지 작업을 수행 할 수 있습니다.

Tcl은 네트워크 테스트 및 관리 응용 프로그램에 오랫동안 사용되어 왔습니다. Tcl을 사용하여 1990 년대에 SNMP 기반 네트워크 관리를 수행하는 방법에 대한 책이있었습니다.

Tcl의 구문은 분명히 이상하지만 라이브러리는 매우 강력합니다. 이것은 파이썬 프로그래밍 언어 용 표준 라이브러리로 할 수있는 것과 비슷한 소켓 위의 맞춤 네트워크 동작의 동작을 정의하는 프레임 워크와 같은 기능을 제공합니다.

파이썬 및 다른 스크립팅 언어와 달리, Excl이라는 Tcl 프로그램을위한 매우 강력한 도구가 있습니다 (expect man page 참조).

Expect에는 편리한 기능이 있습니다. 자동으로 Tcl 테스트 스크립트를 생성 할 수 있습니다. 생성 된 스크립트는 Expect 함수를 호출합니다. 이 녹음을 할 때, 그것은 수동적 인 중간자로서 대화의 양면을 녹음합니다. MS Word 나 Emacs에서 편집을하는 동안 매크로를 기록하는 방식.

그런 다음 자동 생성 된 Expect 스크립트를 편집하여 미세 조정하거나 다르게 동작 시키거나 여러 변형을 만들 수 있습니다. 회귀 테스트를 작성하는 것은 매우 편리합니다. 이 기능을 사용하여 상위 계층 프로토콜 테스트 작성을 시작할 수 있습니다 (필요한 경우). 처음부터 뛰는 소리.

Tcl/Expect를 사용하여 문자열 기반 명령을 사용하는 표준 TCP 응용 프로그램 (FTP, HTTP, SMTP 등)을 테스트 할 수 있다고 생각합니다. TELNET과 같은 문자 기반 응용 프로그램을 테스트하여 stdin에서 입력을 읽고 stdout으로 출력을 생성하는 데 적합합니다.