Netscaler Detection Tool (Python)

An itibari ile saat sabaha karşı 4:48 ve ben artık yoruldum 🙂

wafw00f uygulamasını bir çok kişi biliyordur, WAF(Web Application Firewall) cihazlarını tespit etmek için kullanılır. Örneğin xxx.com da hangi WAF cihazı var diye kontrol etmek istediğinizde wafw00f sizin için test ediyor. (13 WAF cihazını tanıyor.)

wafw00f Netscaler cihazları rahatlıkla tespit edebilmekte ancak ben bununda yerlisi olsun diye başladım bir yerden, başlangıç olarak netscaler cihazını tespit edebilen bir uygulama geliştirdim.

Uygulamanın Çalışma Yapısı :

Netscaler cihazları kullanıldaki networkler de HTTP protokolü içerisine set-cookie parametresi için NSC_Ajsbbu.dpn.us_WJQ= ile başlayan değişken set eder.

Geliştirmiş olduğum uygulama ise tam olarak bu değere göre işlem yapmakta, HTTP REQ gelen HTTP.RES da “set-cookie” var mı öncelikle bunu kontrol eder, yok ise netscaler yok diyerek sonlanır, set-cookie var ise set-cookie değişkenine ait değerin ilk üç karakteri “NSC” mi şeklinde kontrol eder.

Bu kontrol sonucunda set-cookie var ve ilk üç harfin de “NSC” var ise netscaler vardır şeklinde uygulama size yanıt dönmekte.

 

Uygulama kaynak kodu şu şekilde,

import sys
import httplib

if __name__ == ‘__main__’:
from optparse import OptionParser
parser = OptionParser()

parser.add_option(“-t”, “–target”, dest=”target”, default=’localhost’, help=”ADDRESS for server”, metavar=”TARGET”)

(options, args) = parser.parse_args()
conn = httplib.HTTPConnection(options.target, 80)
conn.request(“GET”, “/”)
res = conn.getresponse()
cookie = str( res.getheader(“set-cookie”))
if not cookie:
print “Not Detected Netscaler.”

ns = cookie.split(“_”)
if ns[0] == “NSC”:
print “Detected NetScaler”
else:
print “Not Detected Netscaler.”

Share Button

RedHat 5.11 Geldi…

Redhat mail listesinden almış olduğum bir haber için yeniden sizlerleyim 🙂

Redhat 5 için beklenen son minor sürün olan Redhat 5.11 16.09.2014 itibari ile yayınlandı.

Redhat 5.11 sürümü ile gelen bazı yenilikler ise su şekilde,

  • İşletim sistemi kararlılığı ve güvenliğinde iyileştirme
  • Yeni Storage sürücüleri eklendi,
  • VMware ESXİ ortamında çalışan redhat işletim sistemleri için iyileştirme içeriyor,
  • Openscap versiyonı 1.0.8 update edildi,
  • Redhat hata ayıklama desteği arttırıldı,
  • GUI ve CLI dan abonelik kolaylaştırıldı.

 

https://access.redhat.com/downloads/ adresinden redhat portal kullanıcınz ile login olarak redhat 5.11 indirebilirsiniz.

31 Mart 2017 de Redhat 5 in end of life olarak desteğinin sonlanacağı belirtiliyor.

 

Redhat Linux Dökümanları için:

https://access.redhat.com/knowledge/docs/Red_Hat_Enterprise_Linux/

 

Redhat yaşam döngüsü için:

https://access.redhat.com/site/support/policy/updates/errata/

Share Button

BIND DNS sunucu versiyon bilgisi gizleme

Geyik bölümü (Okumasanızda olur): 

Evlilikten sonra uzunca bir süre blog da bir şeyler paylaşmadığımı fark ettim, paslanmış moddan çıkıp yeniden sahalara dönmek için ufak bir idman olsun diye bu yazı ile başlıyorum…

 

Neden BIND versiyon bilgisini saklıyoruz:

Malum artık kimse tek tek sunucu tarayıp sistem zafiyeti araştırmıyor, bu işleri botlara bıkartık. Botlar bizim için IP adreslerin deki servisleri tarıyor, işletim sistemi, serviste çalışan uygulama isimleri, hatta uygulama versiyonunu bile alıp DB ye atıyor.

 

Gün oluyor x uygulamasının y versiyonunda kritik bir zafiyet çıkıyor, zafiyet publish edilir edilmez bizim hacker abilerimiz DB ye baglanıp bir select çekiyorlar, xxxx tane bu versiyonu kullanan sunucu var, başlıyorlar sunuculara exploit ile erişmeye… Anlayacağınız exploit publish edildikten  sonra belki dakikalar, belki saatler içerisinde exploit denemeleri gelmeye başlıyor.

 

Durum böyle olunca biz sistem yöneticileri içinde uygulama adı, versiyon bilgisi v.b. gizlemek önem arz ediyor.

 

Lafı bırakıp işimize bakalım : 

Bind dns sunucusunda versiyon bilgisini dig komutu ile  ögrenebiliriz,

 

[important]

[root@myserver ~]# dig version.bind chaos txt @1.1.1.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> version.bind chaos txt @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1184
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;version.bind. CH TXT

;; ANSWER SECTION:
version.bind. 0 CH TXT “9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1”

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 28 10:55:06 2014
;; MSG SIZE rcvd: 95

[/important]

 

Aynı sunucu da bind versiyonunu öğrenmek için named -v komutunu çalıştıralım,

[important][root@myserver ~]# named -v
BIND 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1[/important]

Gördüğünüz gibi sunucuda root da olsak, uzaktaki bir bot da olsak aynı veriye ulaşabiliyoruz.

yukarıda bahsetmiş olduğum nedenlerden dolayı bu bilgiye dışarıdan erişimi engellemek gerekiyor, bunun için named.conf dosyasına bir satır ekleme yapmak gerekiyor.

 

[important]

options {

version “version was hidden”;

};

[/important]

 

named.conf daki options bölümü içerisine version “….”; şeklinde bilgi eklemeniz yeterli.

bu işlem sonrasında bind servisini restart ederek yeniden dışarıdan sorgumuzu gerçekleştiriyoruz.

 

 

[important]

[root@myserver ~]# service named restart
Stopping named:  [ OK ]
Starting named: [ OK ]
[root@myserver ~]# dig version.bind chaos txt @1.1.1.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> version.bind chaos txt @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53319
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;version.bind. CH TXT

;; ANSWER SECTION:
version.bind. 0 CH TXT “version was hidden”

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 28 11:06:14 2014
;; MSG SIZE rcvd: 75

[/important]

 

gördüğünüz gibi sistemimize botlar gelse de artık bizden versiyon bilgisi alamıyor, db den select çektiğinde bizim IP adresimiz listelenmiyor ve sunucumuz üzerinde exploit denemeleri yapılmıyor..

 

Share Button

mail loops back to myself

Postix de aşağıdaki gibi bir hata ile karşılaşabilrisiniz:

[important]The mail system <root@localhost.kayhankayihan.com>: mail for localhost.kayhankayihan.com loops back to myself[/important]

Bu hatanın sebebi postfix mail sunucunun main.cf dosyasında ki eksik bir yapılandırmanın sonucunda ortaya çıkıyor.

Bu hatayı düzeltmek için,

# vi /etc/postfix/main.cf

 

[important]

mydestination = myserver.kayhankayihan.com, localhost, localhost.localdomain

 

[/important]

yukarıdaki gibi olan satırı aşağıdaki gibi değiştiryorum.

[important]mydestination = myserver.kayhankayihan.com, localhost, localhost.localdomain, localhost.kayhankayihan.com[/important]

bu işlem sonrasında hatanın düzeldiğini görebilirsiniz.

Share Button

VMware deki Linux un Mevcut Diskini Büyütmek

Bundan önceki yazılarımda disk büyütme işlemi ile ilgili bir kaç içerik paylaşmıştım ancak bu sefer durum farklı.

Önceki senaryolar da mevcut sistem diskinin yanına yeni bir disk ekliyor ve bu diski Logical Volume dahil ediyorduk, bugünki işlemde ise mevcut diskin boyutunu vmware de büyüterek işletim sistemin de de algılanmasını sağlayacağız.

Bu işlem RHEL ve Centos işletim sistemleri üzerinde denendi.

Note : Dosya yapısının kesinlikle ext3 olması gerekir ve LVM ile yapılandırılmış olmalıdır.

 

işlem adımları : 

1- Boyut genişletme işlemine başlamadan önce diskimizdeki partitation yapısına göz atalım,

# fdisk – l 

[important]

Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM

[/important]

 

2-  Vmware tarafında diski büyüttük ancak bu henüz diskte görünmüyor, yeni partitaion oluşturuyoruz,

# fdisk /dev/sda

 

  • p tuşuna basın
    • Partition tablosunu görebilmek için.
  • n tuşuna basın
    • Yeni bir partition oluşturmak için,
  • p tuşuna basın,
    • Primary partition oluşturmak için
  • 3 tuşuna basın,
    • Partition numarası 3
  • İki kez enter,
  • t tuşuna basın,
  • 3 tuşuna basın,
  • 8e tuşuna basın,
  • w tuşuna basın
    • Yeni partition bilgilerini diske yazmak için

 

3-Diskte yeni bir partitation oluşturduktan sonra işletim sistemini yeniden başlatalım.

# reboot

 

4- Sistemimiz yeniden açıldığında partitation yapısını kontrol ediyoruz, yeni partitation ve 8e tipin demi kontrol ediyoruz.

# fdisk -l

[important]Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
/dev/sda3 3917 39162 283111485 8e Linux LVM[/important]

 

 

5- LVM kullanılan diskimiz de yeni fiziksel bir alan oluşturuyoruz.

# pvcreate /dev/sda3

 

6- Volume group ile diskimizdeki partitation extend edelim,

# vgextend VolGroup00 /dev/sda3

 

7- Volume Group boyutunu kontrol edelim, boyutun büyümüş olması gerekir,

# vgdisplay VolGroup00

 

8- Logical volume extend edelim,

lvextend -l +100%FREE /dev/VolGroup00/LogVol00 /dev/sda3

 

10- Extend işleminden sonra diski resize ediyoruz,

resize2fs /dev/VolGroup00/LogVol00

 

11- Diskteki son duruma göz atalım,

df -h

Kısaca sanal makinemize ikincil(sdb) diskini eklemeden sda diskini nasıl büyütebiliriz işleminden bahsettim. Konu ile ilgili yaşayacak olduğunuz sorunlarda benimle iletişime geçebilirsiniz.

Kaynak : http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006371

Share Button