Penetrasyon testlerinde IPS Keşfi

Günümüzde çoğu firma gelebilecek siber saldırılara karşı Saldırı tespit ve engelleme (IPS) sistemleri kullanmaktadır. IPS’ler eğer iyi yapılandırılır ve logları takip edilirse birçok konuda şirketleri siber saldırılara karşı koruyacaktır. Fakat gerek IPS’lerin güvenlikciler tarafından sihirbaz cihaz olarak bilinmesi gerek IPS firmalarının web uygulamalarına yönelik yapılan kompleks saldırılar karşısında yetersiz kalması sonucu günümüzde IPS kullanmak gerçek güvenlik açısından çok birşey ifade etmemektedir.

Yapılan güvenlik testlerinde(penetrasyon testleri) bu tip cihazlar konuya hakim bir güvenlikci/hacker  tarafından rahatlıkla bypass edilebilmektedir. (Çeşitli teknikler kullanarak IPS bypass etme konusunu  yakında çıkacak yazımda detaylı değineceğim)

Testler öncesi hedef sistemi koruyan bir IPS var mı yok mu(IPS’in aktif olup olmadığı, aktifse gelen saldırı paketlerine nasıl aksiyon aldığı) anlamak için basit denemeler yapmamız bizi sonuca götürecektir.

IPS Keşfi

IPS keşfi  için çeşitli yöntemler denenebilir fakat benim uzun süredir sık kullanılan IPS ürünlerinde test ettiğim ve çalıştığını onayladığım basit bir yöntem var: hedef sisteme IPS’I tetikleyecek  HTTP istekleri göndermek ve cevapları incelemek. Gönderilecek HTTP istekleri anahtar kelime olup IPS’i tetikleyecek HTTP istekleri seçilmelidir.

Hemen hemen tüm IPS’lerde directory/path  traversal  zaafiyetine karşı çeşitli imzalar yer almaktadır. Ya da URL de geçecek /etc/passwd, /bin/sh, cmd.exe gibi stringler IPS’in devreye girmesi ve aksiyon alması için yeterlidir.

Örnekler:

#telnet ip_adresi 80
GET ../../../etc/passwd HTTP/1.0

#telnet ip_adresi 80
GET ../../../bin/sh   HTTP/1.0

#telnet ip_adresi 80
GET ../../../../cmd.exe  HTTP/1.0

gibi.

Bu istekleri hedef sisteme gönderdiğimizde eğer bağlantı aniden kesiliyorsa (TCP RST) ya da hedef sisteme olan bağlantınız kesiliyorsa(hedefe gönderdiğiniz paketlere cevap dönmüyorsa) arada koruma modunda bir IPS(ya da benzeri işlevi yapan bir Firewall özelliği(Checkpoint SmartDefense gibi)) var demektir.

Eğer geriye cevap olarak RST paketi dönüyorsa IPS aktif olarak saldırıları RST paketiyle engelliyor demektir. Geriye cevap dönmüyr ve bağlantınız zaman aşımına uğruyosa IPS herhangi bir paket dönmeden sessiz olarak paketinizi düşürüyor demektir.

 IPS koruması olmayan bir sisteme bu tip HTTP istekleri gönderdiğimizde aşağıdakina benzer çıktı alırız.

# telnet www.snort.org 80
Trying 68.177.102.20…
Connected to www.snort.org.
Escape character is ‘^]’.
GET ../../../etc/passwd HTTP/1.0

HTTP/1.1 400 Bad Request
Date: Mon, 15 Feb 2010 09:53:42 GMT
Server: Apache
Content-Length: 289
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache Server at www.snort.org Port 80</address>
</body></html>
Connection closed by foreign host.

IPS koruması olduğunu düşündüğümüz bir siteye aynı isteği gönderip tcpdump ile paketleri izlersek nasıl bir aksiyon aldığını rahatlıka görebiliriz.

[email protected]:~# telnet www.tippingpoint.com 80
Trying 66.179.208.38…
Connected to www.tippingpoint.com
Escape character is ‘^]’.
GET ../../../etc/passwd HTTP/1.0

Yapılan isteğe herhangi bir cevap dönmüyor, arada bir cihazın engellediğini düşünüyoruz ve tcpdump ile paketleri izliyoruz.

[email protected]:~# tcpdump -i eth0 -ttnn host www.tippingpoint.com-X
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
1266164687.171707 IP 192.168.1.103.33743 > 66.179.208.38.80: S 2292162228:2292162228(0) win 5840 <mss 1460,sackOK,timestamp 5333259 0,nop,wscale 6>
1266164687.186012 IP 66.179.208.38.80 > 192.168.1.103.33743: S 2738042328:2738042328(0) ack
1266164687.186042 IP 192.168.1.103.33743 > 66.179.208.38.80: . ack 1 win 5840
1266164701.117674 IP 192.168.1.103.33743 > 66.179.208.38.80: P 1:35(34) ack 1 win 5840
1266164704.116954 IP 192.168.1.103.33743 > 66.179.208.38.80: P 1:35(34) ack 1 win 5840
        0x0000:  4510 004a ffc2 4000 4006 e3a3 c0a8 0167  [email protected]@……g
        0x0010:  c21d d30a 83cf 0050 889f 9eb5 a333 35d9  …….P…..35.
        0x0020:  5018 16d0 54ae 0000 4745 5420 2e2e 2f2e  P…T…GET…/.
        0x0030:  2e2f 2e2e 2f65 7463 2f70 6173 7377 6420  ./../etc/passwd.
        0x0040:  4854 5450 2f31 2e30 0d0a                 HTTP/1.0..
1266164710.117343 IP 192.168.1.103.33743 > 66.179.208.38.80: P 1:35(34) ack 1 win 5840
        0x0000:  4510 004a ffc3 4000 4006 e3a2 c0a8 0167  [email protected]@……g
        0x0010:  c21d d30a 83cf 0050 889f 9eb5 a333 35d9  …….P…..35.
        0x0020:  5018 16d0 54ae 0000 4745 5420 2e2e 2f2e  P…T…GET…/.
        0x0030:  2e2f 2e2e 2f65 7463 2f70 6173 7377 6420  ./../etc/passwd.
        0x0040:  4854 5450 2f31 2e30 0d0a                 HTTP/1.0..
1266164722.117149 IP 192.168.1.103.33743 > 66.179.208.38.80: P 1:35(34) ack 1 win 5840
        0x0000:  4510 004a ffc4 4000 4006 e3a1 c0a8 0167  [email protected]@……g
        0x0010:  c21d d30a 83cf 0050 889f 9eb5 a333 35d9  …….P…..35.
        0x0020:  5018 16d0 54ae 0000 4745 5420 2e2e 2f2e  P…T…GET…/.
        0x0030:  2e2f 2e2e 2f65 7463 2f70 6173 7377 6420  ./../etc/passwd.
        0x0040:  4854 5450 2f31 2e30 0d0a                 HTTP/1.0..
Tcpdump çıktısından anlaşılacağı gibi hedef system gönderdiğimiz HTTP istekleri karşılık bulmuyor. Çünki aradaki IPS bu paketleri zararlı olarak işaretleyip  sessize blokluyor.

IPS’in RST paketiyle engelleme yaptığı durum

Bazı IPS’ler saldırıyı engellerken TCP RST paketi kullanır(aslında bu engelleme yöntemi ayarlanabilir bir seçenektir ve çoğu  IPS için sessiz blokla ya da TCP RST gönder denilebilir)

Yine önünde IPS olduğunu düşündüğümüz bir siteye yönelik HTTP isteğiimizi gönderelim.

[email protected]:~# telnet www.checkpoint.com  80
Trying 216.200.241.66…
Connected to www.checkpoint.com.
Escape character is ‘^]’.
GET ../../../etc/passwd HTTP/1.0
Connection closed by foreign host.

Aldığımız “Connection closed by foreign host.”  Mesajı bize arada bir cihazın aktif olarak bağlantımızı blokladığını gösterir. Önermemizi doğrulamak için tcpdump çalıştırıp ekrana düşen paketleri incelersek hedef sistemden dönen RST paketi görülebilir.

# tcpdump -i eth0 -ttttnn host www.checkpoint.com
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
2010-02-14 11:37:26.306084 IP 192.168.1.103.52392 > 216.200.241.66.80: S 1303966254:1303966254(0) win 5840 <mss 1460,sackOK,timestamp 5560999 0,nop,wscale 6>

2010-02-14 11:37:29.303649 IP 192.168.1.103.52392 > 216.200.241.66.80: S 1303966254:1303966254(0) win 5840 <mss 1460,sackOK,timestamp 5561899 0,nop,wscale 6>

2010-02-14 11:37:29.559554 IP 216.200.241.66.80 > 192.168.1.103.52392: S 3390823897:3390823897(0) ack 1303966255 win 5792 <mss 1460,sackOK,timestamp 3163092484 5560999,nop,wscale 2>

2010-02-14 11:37:29.559597 IP 192.168.1.103.52392 > 216.200.241.66.80: . ack 1 win 92 <nop,nop,timestamp 5561975 3163092484>

2010-02-14 11:37:42.377165 IP 192.168.1.103.52392 > 216.200.241.66.80: P 1:35(34) ack 1 win 92 <nop,nop,timestamp 5565821 3163092484>

2010-02-14 11:37:42.632340 IP 216.200.241.66.80 > 192.168.1.103.52392: R 3390823898:3390823898(0) win 0
Son pakete bakılacak olursa bağlantımızı koparanın RST paketi olduğu görülecektir.

..

This entry was posted in IDS/IPS/IDP, Penetration and tagged . Bookmark the permalink.

4 Responses to Penetrasyon testlerinde IPS Keşfi

  1. dincersalih says:

    eline sağlık güzel bir yazı olmuş
    sistemin önünde load balancer tespiti içinde halberd kullanılabilir.

  2. zapatov says:

    mrb.
    nmap neden os detection da doğru sonuçlar veremiyor. who is siteleri ve netcraft sunucu üzerinde koşan sistemi ve web serverı gayet net tespit edebiliyor. acaba win altında zenmap kullanıyorum linux sürümü daha mı stabil. yoksa durum aynımıdır. teşekkürler.

  3. Huzeyfe says:

    Nmap’in OS keşfini sağlıklı yapabilmesi için bir açık bir de kapalı port bulması lazım. Taradığınız sistem önündeki Firewall kapalı portlar için RST dönmüyorsa işi zorlaşıyor biraz.

  4. Pingback: Penetrasyon testlerinde firewall keşfi | Complexity is the enemy of Security

Leave a Reply

Your email address will not be published. Required fields are marked *

5 × 2 =