18 Mart 2015 Çarşamba

PyQt ile Responsive Arayüz Yapma

    Responsive'dan kastım componentleri güncellenmesi, anlık olarak, ekranda diğer componentleri aksatmadan işlemler yapabilmenizdir.
Javada bu tarz işlemleri yaparkene mecburen thread kullanıyorduk. Bir süredir Python'la ugrasıyordum. Geçenlerde arkadaşın Github reposundan forkladığım, komut satırında çalışan dosya indirmeye yarayan Python ile yazılmış uygulamaya bi ayar çekeyim dedim. Forklayıp ayrı bir python dosyası şeklinde arayüzlü versiyonu ekledim.

Kullandığım componentlerden biride Progressbar idi. Malum dosyanın yüzde kaçının indiğini kullanıcıya göstermek lazım. Az araştırdım genelde progressbar ile ilgili iş yapanlar ya thread yada timer kullanıyordu.

Sonrasında şu büyülü satırı buldum. Ne thread ne başka birşeye gerek kalmadan tek satırla işimizi şu şekilde halledebiliriz.

14 Mart 2015 Cumartesi

Stack Based Buffer Overflow ve Exploit Kodlama - 1

2014'ün son ayında başlayıp uyuşukluğumdan dolayı yarıda kestiğim yazıyı yeniden yazma girişiminde bulundum. Arada bir kaç kez daha bırakmış olsamda sonunda bitiriyorum.

Uzunca bir yazı olacak, bu yüzden Stack ve Buffer gibi kavramları anlatmakla fazla vakit kaybetmeye gerek yok (ilerleyen kısımlarda bir görselle bir kaç şey anlatmam dışında). Bu adresten ayrıntılı bilgileri okuyabilirsiniz. Şimdi bir uygulamayı patlatmak ve overflow ettiğimiz uygulama için Exploit yazmak için yapılan temel adımları şöyle sıralayabiliriz.
ÖNEMLİ:  Bu yazıda anlatacaklarım herhangi bir koruma mekanızmasına (SEH, ASLR vs.) karşı bypass içermemektedir. O tarz overflow ve exploit kodlamaları ileriki yazılarda olur umarım -üşenmez yazarsam-
  • Uygulamanın girdi alan noktalarında bir overflow tespit etmek
  • Overflow olan sınırı tespit etmek
  • Uygulama içinde bizi Stack'e yönlendirecek adresi bulmak
  • Bad charları tespit etmek
  • Uygun shellcode yazmak
  • Ve bomm
Bu yazı muhtemelen seri şeklinde olacaktır. İlk olarak local bir buffer overflow uygulaması ile temelleri yazmaya çalışacam, sonrakilerinde remote overflow içinde anlatımlar olacaktır. Umarım...

Temel olarak buffer overflow için şunu söyleyebiliriz: Uygulamanın çalışma sırasında kullanıcıdan aldığı bir girdiye ayrılan sınırın üstünde data girişi yapmaktır. Birçok overflow yazısında int buff[125] gibi bir girdi alanı açılıp strcpy, memcpy vs ile C dilinin kontrolsüz fonksiyonlarını kullanarak uygulamaya 125'ten fazla bir input yollayarak programı patlatmayı anlatır. Anlatılanda doğrudur, mantık aynen bu şekilde işler, haddinden fazla inputu göndermek ve eğer kontrol yoksa uygulamayı patlatmak.
Uygulamaya fazla input yolladığımızda stack'in yapısından dolayı stack'e atılan parametreler ve geri dönüş değerler ezilir/kaybolur bundan dolayı uygulama crash olur ve sonlanır. İyi bir exploit, geri dönüş değerini istediğimiz bir alana referans ettirmek ve o alana shellcode'umuzu doldurmak ile olur. Sonrası işlemcide, sağolsun kendisi bizim için işlemleri yapacaktır.

Patlatacağımız uygulamaya ait Perl diliyle yazılmış exploit koduna Exploit-db den bakabilirsiniz. Biz Python ile exploiti geliştireceğiz. Verdiğim linkte uygulama için download linkide bulunmakta.

Let's Begin

Öncelikle uygulamanın kabul ettiği formatlardan biri olan m3u için dosya oluşturup içini junk datayla dolduran bir kod yazalım. Başlangıç olarak 10.000 byte verelim.

4 Mart 2015 Çarşamba

VMware Workstation - The virtual machine appears to be in use Hatası ve Çözümü

Canım sıkıldı bi VMware'den XP'ye gireyim az BOF yapayım dedim. Bi de ne göreyim VMware Workstation diyor ki "The virtual machine appears to be in use.". Aman tanrım didim.


Neyse ki korkulacak bişey yokmuş. Çözümü kurmuş olduğunuz sanal makineyi hiçbir şekilde etkilemiyor rahat olsun içiniz.

8 Ocak 2015 Perşembe

CryptoDouble - Yatır Coini Katla İkiye

    Bir kaç zaman önce cloud mining ile ilgili iş yapan CoIntellect ile ilgili yazmış olduğum yazıda iyi kötü yaşanılan olaydan ve yatırdığım paradan bahsetmiştim. Şimdi iki tane 100€'luk paketim var, yatırım yaptığım parayı çıkardım gerisi kâr sülalem raat. Neyse ordan aldığım ilk ödemeyi Dogecoin olarak alıp Bitcoin'e çevirdikten sonra bi şu işe gireyim diyerekten BTC işine girdim. BTCTurk isimli türk sitesinde biriktirmeye başladım Bitcoinciklerimi. Az buçuk bişeyler biriktikten sonra coinin fiyatı acayip düştü. Ne oldu kâr edecez diye kalkıştığımız iş bi tarafımızda patladı. 860 liralardan 610-650 lira bandına kadar bir düşüş yaşandı.

Paracıklarım gitmişti. Zarardaydım ne yapacaktım peki? Yükselmesini bekleyip 750 lira bandındayken paraları cekip zararı minimuma indirecektim. Ama ben ne yaptım? Milletin yeni yeni ve hararetli bir şekilde konuşmaya başladığı The Place for Your Profit mottosuyla ortaya çıkan CryptoDouble  adresine yatırdım. Peki nedir bu CryptoDouble?

20 Aralık 2014 Cumartesi

OpenCV' yi MinGW ile Derleyip CodeBlocks Yardımıyla Resim İşleme - C Programlama -

     OpenCV'yi görüntü işleme ile uğraşanlar mutlaka duymuştur. Duymak güzel şey de işi uygulamaya sokunca çıkan sıkıntılar adama kimi zaman geri adım attırabiliyor. "Yeter ulan senle mi uğraşcam" diyip ödevleri salmayın gençler. Sonu iyi olmuyor. Tecrübeyle sebittir.

Neyse konumuza gelelim efenim. Şimdi bu OpenCV denen illeti indirdiğimizde herhangi bir kurulum yapmıyor. Sıkıştırmış olduğu dosyaları extract ediyor. Bundan sonrası sizde. İlk olarak indirmiş olduğumuz kaynak kodlardan kurulumu yapacağız. Bu işlemler linuxculara tanıdık gelir. Tabi eğer kaynak koddan kurulum yaptıysanız, apt-get yada dpkg -i ile işler bitmiyor. Ayık olun.

Temel adımlar

  • Configure
  • Make
  • Make install
Heeaa. Tanıdık geldi dimi linuxcular sizi. Amma velakin bu işlemleri Windows altında yapacağımız için bize bu işi yapacak program lazım. İmdadımıza hemen CMake yetişiyor. Buradan Windows için Binary distributions kısmı altında bulunan exe dosyasını indiriyoruz. Ardından next-next ile kurulumu yapıyoruz. CMake (cmake-gui) olarak masaüstüne kısayol atıyor. Bunu çalıştırdıktan sonra karşımıza şöyle bir arayüz çıkacak.

26 Kasım 2014 Çarşamba

VirtualBox Disklerini VMware Disklerine Dönüştürme - Vdi-Vmdk Dönüşümü

    VirtualBox'a ağızlar dolusu sövdükten sonra VMware geçtim. Sövmemin temel nedenlerinden biri Tübitak'ın yapmış olduğu SiberMeydan siber güvenlik yarışmasında OS imajlarından dolayı beni çileden çıkarması. Genymotion ise olayın başka bir boyutu. Bak yine geldi aklıma tipini s..(sevdiğim)

VirtualBox ile oluşturulan sanal makineler VDI (Virtual Disk Image) formatında saklanır. Bu VirtualBox'ın kendi formatıdır. VMware ise VMDK (VMware Virtual Machine Disk Format) formatında sanal makinelerini saklamaktadır. VirtualBox'tan VMware'e geçtikten sonra doğal olarak eski sanal makineleri yeniden kurup konfigüre etmek, gerekli programları toplamak vs.vs gibi olaylarla uğraşmak gün/günleri alabilecek bir olay. Bu yüzden dönüşümü yapabilir miyim diye bir baktım gugıl amcaya.

Bir kaç yolu olmasına rağmen en basit ve ek bir program kurmaya ihtiyaç duymadan yapabileceğimiz yol VirtualBox'ın kendi VBoxManage tool'unu kullanmaktır. Komut satırından kolayca halledebileceğimiz iş ise şu şekilde olacak;

Metasploit - PostgreSQL Bağlantısı Kurma

    Yeni kurmuş olduğunuzu varsaydığım Kali Linux üzerinden tüm olayları anlatmaya çalışacağım. Yapılacaklar Kali bağımlı değildir, diğer sistemlerde de çalışır muhtemelen yani inş cnm ya.
Metasploit heyking işine girenlerin, bu tür işlerle uğraşanların başucu aracıdır. Hatta bir araçtan ötedir, candır. Framework olarak geçiyor literatürde. Neyse metasploiti çalıştırdığınızda daha hızlı aksiyon alabilmeniz için/aramalar yapabilmek için database bağlantısı şarttır. Metasploit PostgreSQL ve MySQL ile entegre edilebilir fakat defaultu Postgre'dir. Bu yazıda da Posgtre ile olan bağlantısı anlatılacaktır.

24 Kasım 2014 Pazartesi

OpenSSL Kullanarak Asimetrik Şifreleme Yöntemi ile Dosya Şifreleme ve Açma

     Asimetrik şifrelemedeki genel mantık elde iki key'in olmasıdır. Bunlardan biri kişiye özel olan private key bir diğeri ise herkeste olan public key. OpenSSL'in bu şekil yapılan dosya şifrelemesindeki olay ise temelde 2 adımdan oluşuyor.
1- Private key üret
2- Private key'den Public key üret.
Bu iki adımdan sonra şifrelenmesini istediğimiz dosyayı public key ile şifreliyoruz. Ancak buradaki önemli olan nokta encrypt edilmiş dosyayı decrypt etmek için elimizde private key'in olmasıdır. Yoksa babayı alırsınız.

    Elimizde gizli.txt isimli bir dosyanın olduğunu farz edelim. İçeriği ise;

21 Kasım 2014 Cuma

Crunch ile Özel Wordlist Oluşturma

    Tübitak'ın düzenlemiş olduğu Siber güvenlik CTF yarışması olan Siber meydan da yarıştık. Sorulan sorulardan biri, ki yöntemini bildiğim halde parametrelerini hatırlayamadığımdan gugıllayıp aradığım fakat ona rağmen uzunca bir vaktimi yiyen ibine Crunch'tan bahsedecem.

Sorulan soru kablosuz haberleşme paketinin analizine ve şifresinin kırılmasına dayalıydı.
İlk soru paketin içerisindeki ESSID bilgisini bulmamızı istiyordu.
İkinci soru ise paket içerisinde ki şifreyi bulmamızı istiyordu. Burada wordlist kullanacaktık fakat bunun bir sınırı olmalıydı. Verilen ipucu'nda şifrenin 10 karakterden oluştuğu ve 4 karakterinin bilindiği söyleniyordu.

Formatı ise şu şekildeydi: W(?)(a)(?)M(1)y(a)(a)n
W,M,y,n harflerinin yerleri biliniyor geriye kalanlar için özel bir wordlist oluşturup onu deneyecektik. Burada ki ?= alfanumerik karakteri, a= küçük harfi, 1 =rakamı ifade ediyordu.

16 Kasım 2014 Pazar

Gümrük ve Ticaret Bakanlığı MersisKullaniciKayit Sistemindeki Adres Zaafiyeti

     Fırından yeni çıktı. Devlet babamız yanına pek bir zeki yazılımcı arkadaşları dolduruyor demek. Bakanlığın Merkezi Sicil Kayıt Sistemi'ndeki inanılmaz yazılım hatası şimdiye istihbarat kurumlarının ağzını sulandırmıştır.




Şöyle bir görüntüsü var kayıt ekranının. Burada TC Kimlik numarasını girip basit captcha'yı yazdıktan sonra KPS'den Al'a tıklıyoruz sonrasında hemen aşağıdaki Adı, Soyad textbox'ları set ediliyor. E buraya kadar sorun yok diyebilirsiniz. Kimlik numarasından ad soyad bulma için. Devamı ne peki ?

13 Kasım 2014 Perşembe

Twitter Brute Force Tool - TwitterBrute

     Blogun ilk yazılarında python'un mechanize modülünden bahsetmiştim. Mechanize modülünü araştırırken incelediğim tutorial'larda yapılanlar twitter için bot yazmak oluyordu. Basit şekilde login olup tweet atabilecek scriptlerdi. Yapılanlara görünce hemen kafada şimşek çaktı mı desem ampul yandı mı desem. Ampul bize ters aga!. Şimşek çaktı iyi. Neyse ilk olarak yapılan işlem login kısmı olduğu için dedim niye yazmıyoz lan bunun için üç satır kod. Ardına da kullanıcıdan alınan password listesini login olana kadar denerik. Al sana brute force.

     Şu aşamada 9 tane User Agent ekledim her seferinde random seçip kullanıcı girişini yapıyor. Tool komut satırında çalışıyor. Aldığı 3 parametre var.
-u veya --username  --> verilen kullanıcı için işlemi gerçekleştiriyor
-p veya --passlist     --> verilen wordlist için şifreleri teker teker deniyor
-s veya --sleep         --> User lock gibi durumlardan kaçınmak parametreye sn cinsinden bir argüman girebilirsiniz. 1 sn'in altında bir değer girmek için nokta ile ayrılmış float değer girebilirsiniz. (0.5 veya 0.8) Herhangi bir bekleme yapmak istemiyorsanız 0 girebilirsiniz.

12 Kasım 2014 Çarşamba

Dump Edilmiş Process İmajından Windows Şifresi Bulmak

    Bir önceki yazıda açık bir Windows makineden mimikatz ile kullanıcı şifrelerinin açık bir şekilde elde edilmesinden bahsetmiştim.
Bu yazıda ise dump'ı alınmış LSASS.exe processi kullanılarak aynı yöntemle şifreler plaintext olarak alınacaktır. Uzak masaüstüyle bir şekilde sisteme eriştiniz diyelim fakat mimikatz'ı upload edemiyorsunuz ve yönetici olarak çalıştıramıyorsunuz, bu gibi bir durumda olası alternatiflerden biridir bu yapacağımız işlem. Ek bir tool kullanmadan doğrudan Windows Görev Yöneticisi (şu meşhur Ctrl+Alt+Del) ile spesifik olarak dump alabiliyoruz. Ekran görüntüsü tüm olayı özetliyor.