IDS/IPS Evasion Techniques

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

TTL Manipulation

IDS/IPS까지 도달할 수 있을 정도의 TTL을 가진 패킷을 일부 전송하되, 최종 시스템에는 도달하지 못하도록 한다. 그런 다음 동일한 시퀀스를 가진 다른 패킷들을 전송하면 IPS/IDS는 이를 중복으로 판단해 검사하지 않지만, 실제로는 악성 내용을 담고 있게 된다.

Nmap option: --ttlvalue <value>

Avoiding signatures

패킷에 무의미한(garbage) 데이터를 추가하여 IPS/IDS의 시그니처를 회피한다.

Nmap option: --data-length 25

Fragmented Packets

패킷을 분할(fragment)하여 전송한다. IDS/IPS가 이를 재조립할 능력이 없다면 패킷은 최종 호스트로 전달된다.

Nmap option: -f

Invalid checksum

센서들은 성능 상의 이유로 일반적으로 체크섬을 계산하지 않는다. 따라서 공격자는 센서에서는 해석되지만 최종 호스트에서는 거부되는 패킷을 전송할 수 있다. 예:

RST 플래그와 잘못된 체크섬을 가진 패킷을 전송하면 IPS/IDS는 이 패킷이 연결을 종료하려는 것으로 판단할 수 있지만, 최종 호스트는 체크섬이 유효하지 않아 패킷을 폐기한다.

Uncommon IP and TCP options

센서는 IP/TCP 헤더 내 특정 플래그나 옵션이 설정된 패킷을 무시할 수 있지만, 목적지 호스트는 해당 패킷을 수신 시 수용할 수 있다.

Overlapping

패킷을 분할할 때 일부 바이트가 겹치는(overlap) 상황이 생길 수 있다(예: 패킷2의 처음 8바이트가 패킷1의 마지막 8바이트와 겹치고, 패킷2의 마지막 8바이트가 패킷3의 처음 8바이트와 겹치는 경우). 이때 IDS/IPS가 재조립하는 방식이 최종 호스트와 다르면 서로 다른 패킷으로 해석된다.
또는 동일한 offset을 가진 2개의 패킷이 도착해 호스트가 어느 쪽을 선택해야 하는 상황이 발생하기도 한다.

  • BSD: 더 작은 _offset_을 가진 패킷을 선호한다. 같은 offset의 경우 먼저 도착한 것을 선택한다.
  • Linux: BSD와 비슷하지만, 같은 offset일 때는 나중에 도착한 패킷을 선택한다.
  • First (Windows): 먼저 온 값을 사용한다.
  • Last (cisco): 나중에 온 값을 사용한다.

TCP Stream Overlap / Reassembly Mismatch

IP fragment와 마찬가지로, 오버랩되는 TCP 세그먼트는 IDS/IPS와 목적지 호스트에 의해 다르게 재조립될 수 있다. 센서와 호스트가 오버랩 부분에서 어떤 바이트가 우선하는지에 대해 다르면, IDS/IPS가 보는 위치에는 정상 바이트를, 호스트가 최종적으로 재조립하는 위치에는 악성 바이트를 배치할 수 있다.

  • 대상 OS의 재조립 정책에 따라 먼저 정상 세그먼트를 보내고 그 뒤에 악성 오버랩 세그먼트를 보내거나(또는 순서를 반대로 한다).
  • 호스트에 대해 스트림을 유효하게 유지하면서 센서의 모호성을 최대화하기 위해 **작은 오버랩(tiny overlaps)**을 사용한다.

IPv6 Extension Headers & Fragment Tricks

IPv6는 임의의 헤더 체인을 허용하며, 상위 계층(TCP/UDP/ICMPv6) 헤더는 모든 확장 헤더 뒤에 위치한다. 장치가 전체 체인을 파싱하지 않으면 확장 헤더를 삽입하거나 분할(fragment)하여 장치가 기대하는 위치에서 상위 계층 헤더가 보이지 않게 만들어 우회할 수 있다. RFC 7112는 전체 IPv6 헤더 체인이 첫 번째 프래그먼트에 존재할 것을 요구한다; 비규격의 작은 프래그먼트를 허용하는 장치는 L4 헤더를 이후 프래그먼트로 밀어 넣어 우회할 수 있다.

Practical patterns:

  • Long extension-header chains로 상위 계층 헤더를 패킷 안쪽으로 밀어 넣는다.
  • Small first fragments가 IPv6 + Fragment + options만 포함하게 하여 L4 헤더를 나중 프래그먼트로 남긴다.
  • extension headers + fragmentation를 결합해, 첫 번째 프래그먼트만 검사하는 장치로부터 실제 상위 계층 프로토콜을 숨긴다.

Tools

References

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기