25 Aralık 2015 Cuma

LibreOffice Android Viewer için Hata Avcılığı Oturumu

Herkese merhaba, 

Libreoffice'in Android cihazlarda belge görüntüleme uygulaması olan Viewer için, 29.12.2015 salı günü saat 13:00'da Libreoffice Çanakkale Ekibi olarak bir hata avcılığı oturumu düzenliyoruz. 
LibreOffice hata takip sistemi olarak Bugzilla'yı kullanıyor. Hata avlama oturumunda gönüllüler tarafından, uygulamanın çalışırken beklenenden başka şekilde davranıp davranmadığı test ediliyor. Test sonucu beklenenden farklıysa hata raporlanıyor.

Bunun haricinde hata raporlama; uygulama için önerileri, iyileştirmeleri de içeriyor. Örneğin LibreOffice masaüstü uygulamasında olan bir özellik Viewer için yapılmamışsa bu da Bugzilla'ya öneri olarak eklenebilir.

Bug raporlama nasıl oluyor diye bu kaynağın okunması iyi olur. LibreOffice Viewer apk'sına da buradan ulaşabilirsiniz.

Hata avı süresince, IRC "#libreoffice-qa" kanalında geliştiriciler ile birlikte Çanakkale ekibi olarak aktif olacağız.

Herkesi bekleriz.

21 Aralık 2015 Pazartesi

LibreOffice Viewer'ın Android Cihazlara Kaynak Koddan Kurulumu

LibreOffice, Android platformu için de uygulama geliştiriyor. Gapps'den kurulup kullanılabilir elbette. Ben kaynak kodundan kurup adımlarını görmek istedim. Atla deve değilmiş. :)

 

Masaüstü kurulumu için uygulanan adımlara benzer adımlar uygulanıyor. Masaüstü için bu kurulum nasıl oluyor diye daha önce yazmıştım. Bazı kısımları farklı.

 

* Öncelikle Android SDK ve NDK paketlerine ihtiyacımız var. 

 

* Daha sonra LibreOffice kaynak kodunu yerelimize çekmeliyiz ve dizinin içine geçmeliyiz:

 

$ git clone git://anongit.freedesktop.org/libreoffice/core libreoffice

$ cd libreoffice 

 

* İnen SDK paketini "android-sdk-linux" adıyla kaynak kodunu clone'ladığımız libreoffice dizini içindeki "external" dizini altına çıkartmalıyız ve "SDK Readme.txt" dosyasında dediği gibi aşağıdaki komutla güncelleme ve çalıştırma işini yapmalıyız:

 

$ tools/android update sdk --no-ui

 

* İndirdiğimiz android-ndk.bin dosyasına çalışma izni verip ardından çalıştırmalıyız. 

 

$ chmod a+x android-ndk.bin

$ ./android-ndk.bin

 

Bu çalışma bitiğinde "android-ndk" adında bir dizin oluşmuş olmalı. Bu dizini de yine libreoffice/external/ altına taşımalıyız.

 

* Daha sonra "autogen.input" diye bir dosya oluşturup (libreoffice dizininde) içine aşağıdaki satırı eklemeliyiz. Nedeni ise autogen.sh betiğinin bazı yapılandırma paramerelerini kontrol etmesi. Bunun için 3 tip dosya kullanıyor. Bunlar: autogen.input(ro), autogen.lastrun(rw) ve autogen.lastrun.bak(rw). Derleme sırasında izlenecek varsayılan yolu bu parametre ile değiştirmiş oluyoruz.




--with-distro=LibreOfficeAndroid

 

* Ardından "autogen.sh" dosyasını çalıştırmalıyız. ($ ./autogen.sh) Bitiminde eksik sdk paketleri varsa uyarı alacağız, çıkan uyarıda denildiği gibi bu paketleri de kurmalıyız. autogen.sh çıktısı sorunsuz ise derleme işlemini başlatabiliriz. ($ make)

 

Bu işlem bir miktar sürüyor. Derleme başarıyla tamamlandığında ise "android/source" dizinine geçeceğiz.

 

Bilgisayara android cihazımızı bağladıktan sonra android/source dizininde:

 

$ make install demeliyiz. Bu komut sonunda "LibreOffice Viewer" cihazımızda çalışıyor olmalı :)

 

Not: Android cihazda (Developer options -> Android debugging ayarı açık olmalı) (Bu ayar kapalıyken "adb devices" çıktısında cihazımızı göremeyiz.) 

 

Görüşmek üzere.


3 Aralık 2015 Perşembe

İnet-tr 2015 Kadın Bilişim Paneli

Mustafa Akgül hocanın önderliğinde bu yıl 20. si düzenlenen İnet-tr İstabul üniversitesinde gerçekleşiyor. 3 Aralık'a kadar 5 salonda paralel şekilde bildiriler, seminerler ve paneller devam ediyor. Ayrıntılı program da burada.
Etkinliğin ilk günü Sevinç Gülseçen, İkbal Orundaş, Kader Sucuk, Elif Kuş, Büşra Emirli ve Ceyda Akaydın ile birlikte ben de Kadın Bilişim Paneli'nde konuşmacıydım. Daha çok soru cevap şeklinde ilerleyen panelde vermeye çalıştığım cevapları burada topluca paylaşmış olayım.

Kendinizi tanıtır mısınız? Bu konuya nasıl yöneldiniz? Alanınızla ilgili bu güne kadar neler yaptınız?

Herkese merhaba, ben Aybüke. Çanakkale 18 Mart Üniversitesi’nde son sınıf öğrencisiyim. 5 yıl önce özgür yazılım ile tanıştım. O zamandan beri kendi yaptığım projeler ve katkı verdiğim uluslararası projeler oldu. Geçtiğimiz 2 yıl boyunca, GNU/Linux çekirdeğine katkı verdim. Bu eylülden beri de Libreoffice’e katkı veriyorum. Libreoffice  25 yıllık, her platformda(Linux, Windows, MacOS) sorunsuz çalışan büyük bir ofis yazılım projesi. Benimle birlikte katkı veren Türkiye’de 13 kişiyiz. Proje geliştiricileri katkı vermek isteyenler için çok sıcakkanlılar aslında. Bu söylediğim sadece Libreoffice için değil, tüm özgür yazılım projeleri için geçerli. Mezun olmadan önce bir Libreoffice geliştiricisi olmayı hedefliyorum.

Teknik konularda kadınların yetersiz olarak algılanmasının sosyal, kültürel ve eğitimsel alanlardaki nedenleri sizce nelerdir?


Bu soruya bir örnek ile cevap vereyim. Kız çocukları 6-7 yaşlarında bakkala bile kardeşleri-abileri ile yollanıyorlar. Bu kardeşler-abiler düşünüyor ki ben olmadan bu iş yapılamıyor. Toplum da, bu kızlar büyüdüklerinde onların tek başına bir iş başaracaklarını düşünmüyor normal olarak. Çünkü toplumdaki her erkek bu bakkala giden bir kızın abisi, kardeşi, kuzeni. 

Bununla ilgili kısa bir anım da var. Ortaokulda okulumuza amatör bir rock grubu geldiğinde bateri çalmayı çok isteyip kafama koymuştum.  Çevremdekiler “sen de çalarsın tabi de bu erkekler için daha çok” demişlerdi. Lise bitene kadar gitar çaldım ama bateri çalmayı hala istiyordum. Liseden mezun olunca “mezuniyet hediyesi ne istersin” sorusuna ne dediğimi tahmin edersiniz. O yaz tatili boyunca günde 4-5 saat odadan çıkmadan ince bileklerimle çalışmıştım. Şimdi birçok erkeğin çaldığı kadar iyi bateri çalıyorum. Çünkü bu işi kadınlar da yapar, erkekler kadar iyi yapar.


Kadın olmanızla ilgili bu alanda karşılaştığınız bir engel oldu mu?


Bu alanda karşılaştığım bir engel olmadı. Çevremde tek başına ya da toplu şekilde çalışıp güzel işler yapan çokça kadın-erkek var. Şimdiki Libreoffice katkı sürecindeki grup da buna dahil. Hiçbir cinsiyetin yüceltildiği, ezildiği ya da “sen kadınsın yapamazsın, beceremezsin ver şu bilgisayarı halledeyim“ gibi durumlara şahit olmadım. Aynı şekilde “sen erkeksin dur ben yapayım” gibi bir durum da olmadı. Zaten varsayılan olarak böyle olmalı. Her ne iş olursa olsun cinsiyet değil yapılan iş ölçü alınmalı.
Benim bir parçası olmaktan gurur duyduğum  özgür yazılım dünyası tam da böyle; cinsiyetinizin, milliyetinizin, yaşınızın değil yaptığınız işin konuşulduğu projelerden oluşuyor.


Bütün geliştiricilerin ve kullanıcıların bir araya geldikleri topluluklar varken kadınlar neden ayrıca bir araya gelerek topluluk oluşturuyorlar ?


Ortak ilgi alanlarına sahip insanların bir araya gelip ortak bir enerji oluşturmaları sanırım herkesin üzerinde hemfikir olduğu bir kavram. Kadınların bilişim sektöründe sayıca az oldukları da bilinen bir gerçek. Kadınlar diğer topluluklardan kendilerini soyutlayarak da bir araya gelmiyorlar. Nasıl python kullanarak geliştirme yapan insanların bir araya gelmesine şaşırıp neden ruby kullanıcılarını da aranıza alıp bir yazılım geliştiricileri topluluğu kurmuyorsunuz demiyorsak kadınların da diğer bilişim grupları haricinde biraraya gelmesine şaşırmamalıyız.


Bu yılın başında ben de böyle bir topluluğun kurucusu oldum. Topluluk Pyladies Türkiye. Pyladies dünyada Python ile ilgilenen kadınların iletişimde bulunduğu, ekinlikler düzenlediği bir oluşum. Tokyo’da, Amsterdam’da, Newyork’ta, Çek Cumhuriyetinde yani çok yerde var. Türkiye’de yoktu. Madem yok, biz kuralım dedik :) Dünyada Python ile ilgili neler oluyor, başkaları neler yapıyor bunlardan haberdar olmak, etkinliklerde yüzyüze görüşüp güzel işler yapan insanlarla tanışabilmek, konuşabilmek güzel.


Neden ladies-gentelmen ayrı, diye soranlar için:
* Bırakın da kadınlar nasıl örgütleneceklerine kendileri karar versinler.


“Biz de gelebiliyos mu qıslar” diye soranlar için:
* Elbette gelebiliyorsunuz.


Kadınlara özel bir topluluk oluşturarak siz de ayrımcılık yapmış olmuyor musunuz?

Afyon Ötücü Kuş Sevenler Derneği için neden yöresel ayrımcılık yapıyorsunuz, neden sadece kuşları hatta ötücü kuşları seviyorsunuz veya onları sevenler-sevmeyenler arasında ayrımcılık yapıyorsunuz diye soruluyor mu? Çanakkale Üst Geçit Yaptırma ve Yaşatma Derneği insanları alt geçit sevenler-üst geçit sevenler diye mi ayırıyor? İstanbulda Yaşayan Yozgatlılar Dernekleri Federasyonu bir ayrımcılık yapmıyorsa, ki bence yapmıyor, python ile ilgilenen kadınların bir araya gelip bilgi ve tecrübelerini paylaşmaları neden ayrımcılık olsun? Kadınlar içinde erkeklerin de olduğu oluşumlardan kaçınıyor değil ki! Bakın ben buradayım :)


Bir panelde konuşmak benim için güzel bir deneyim oldu. Hala devam eden etkinliğe imkanınız varsa katılmanızı öneririm. Hoşçakalın :)



GDG Devfest İstanbul 2015

Devfest İstanbul geçtiğimiz pazar günü Bahçeşehir Üniveritesi'nde gerçekleşti. Biz de Çanakkale'den bir grupla oradaydık. (+Necdet Yücel , +Kerem Hallaç , +Ayşe Melike Yurtoğlu , +Gülşah Köse , +Kader Tarlan+yeliz taneroğlu)

İlk katıldığım sunum, sabahki sponsor sunumuydu. Sunum boyunca konuşmacının; cümle kurarken, el ve yüz hareketleri ile  bana ne düşündürdüğünü, bildiğini ne kadar aktardığına dikkat ettim. Konuşmacı hakkındaki gözlemlerimin sonucu olumlu olmadı. Benim konuşmacı olduğumda neler yapmamam gerektiği hakkında iyi bir örnekti.

Bence güzel bir sunum yapmak ve bildiklerimizi iyi bir şekilde aktarmak istiyorsak; dinleyicinin karşıdan bizi nasıl gördüğünü düşünerek davranmalı, konuşurken hareketlerimizin ve yüz ifademizin dinleyiciye ne hissettirdiğine dikkat etmeliyiz. Doğru kelimeleri seçmek de çok önemli. O sunumdan sonra başka bir sunuma katılmadım, standlarda dolaşıp yeni insanlarla tanışmayı tercih ettim. :)

Elbette Devfest'teki tüm sunumlar için değil bu yorumum. Katılan diğer arkadaşlarımdan çok güzel sunumların olduğunu da duydum. Bizim sunumumuz da çok akıcıymış mesela :D

Ben, +Gülşah Köse , +Kader Tarlan ve +yeliz taneroğlu  sunumumuzda, Libreoffice'e katkı sürecini ve Çanakkale'de çalıştığımız ekip ile şimdiye kadar neler yaptıklarımızı anlattık. Birlikte çalıştığım arkadaşlarımla, yaptığımız işleri anlatmak bana çok keyif verdi. Ayrıca sunumun sonundaki soru-cevap kısmı da oldukça eğlenceli geçti benim için. Slaytımıza buradan ulaşabilirsiniz.

Etkinliğin benim için artısı, yeni insanlar tanımak ve sık sık göremediğim arkadaşlarımla hasret gidermek oldu. Bir de sunum deneyimlerime bir yenisini eklemiş oldum.

Görüşmek üzere. :)








10 Kasım 2015 Salı

Amazon Kindle Fire (5th) Nasıl Rootlanır? (Linux)

Kindle Fire, Amazon'un ürettiği, donanım fiyatını oldukça ucuz tutarak yapılmış ama müşterinin beklediğini de veren bir tablet bence :) Özelliklerine bakmak isteyenleri ve satın almak isteyenleri sayfaya yönlendirmiş olayım.

Root işlemine başlamadan önce bu linkten "root_fire_5thGen_2015.zip" dosyasını indirmeli ve sıkıştırılmış halinden çıkartmalıyız.

Tabletten Settings>Devices Options diyip, Serial Number kısmına birkaç kez tıklayarak Developer Options kısmını görünür hale getirmeliyiz.

Developer Options da Enable ADB seçeneğinin aktif olduğundan emin olmalıyız. 


Gerekli paketler: sudo apt-get install android-tools-adb android-tools-fastboot

Tableti bilgisayara bağladıktan sonra "$adb devices" komutunu verdiğimizde aygıt görünüyor olmalı:


İndirdiğimiz dosyada bize gereken sadece sh betiği olan fire_root.sh dosyası.

"$sh fire_root.sh" dediğimizde hızlıca rootlama işlemi başlıyor. Tablet yeniden başladığında "SuperSU" görünüyor olmalı :)


Google Play uygulamasını eklerken:

Buradan uygulama dosyasını indirmeliyiz ve sıkıştırılmış halinden çıkartmalıyız.

"$cd Amazon-Fire-5th-Gen-Install-Play-Store" diyerek dizin içine girip aşağıdaki komutları vermeliyiz:

$adb install com.google.android.gms-6.6.03_\(1681564-036\)-6603036-minAPI9.apk

$adb install GoogleLoginService.apk

$adb install GoogleServicesFramework.apk

$adb shell pm grant com.google.android.gms android.permission.INTERACT_ACROSS_USERS

$ adb install com.android.vending-5.9.12-80391200-minAPI9.apk

$ adb shell pm hide com.amazon.kindle.kso

$ adb kill-server


Bu işlemler sonunda Google Play tablette kullanılabiliyor olmalı.

Wiki sayfası da burada.
Cynogenmod için buraya bakabilirsiniz.
Kolay gelsin :)

5 Kasım 2015 Perşembe

DNS Hijacking Nasıl Yapılır?

DNS(alan adı sunucusu)'nun yaptığı iş ulaşılmak istenen alan adının ip adresini döndürmek, ya da ters dns ile yazılan ipnin gerçekten hangi alan adına sahip olduğunu doğrulamaktır.

Web tarayıcımızda ulaşmak istediğimiz sitenin adını yazıp açmak için tıkladığımızda kısaca olanlar:

İlk önce yerelde cache'e, ip adresi var mı diye bakılır. Yoksa sorgu yerel ağdaki DNS sunucuya yollanır.(udp 53) Burada da yoksa yereldeki dns sunucusu kendisinden bir üstteki dns sunucusuna sorgu yapar.(tcp 53) En son bulunan ip istemciye döndürülür.

Peki biz bulunduğumuz ağdaki DNS sorgularına cevap vermek istersek nasıl bir yol izleyeceğiz?

Kendi bilgisayarımda olan Ubuntu üzerine bir dhcp sunucusu, bir http sunucusu, bir de dns sunucusu kurdum. DHCP sunucusu ile sanal makinalarıma ip dağıtıyorum. Yapılandırmalarını düzenledikten sonra, aynı ağda bulunan sanal makinadaki kullanıcı hurriyet.com'a ulaşmak istediğinde dns sorgusu benim dns sunucuma gelecek ve benim istediğim sayfayı hurriyet.com'muş gibi gösteriyor olacak.

Kurulumlar için:

DHCP sunucusu: 

$sudo apt-get install isc-dhcp-server


HTTP sunucusu (Apache2):

$sudo apt-get install  apache2 php5 libapache2-mod-php5 mysql-server-5.5 php5-mysql libapache2-mod-auth-mysql phpmyadmin

DNS sunucusu (bind):

$sudo apt-get install bind9 bind9utils

Yapılandırmalar:
* DHCP için: /etc/dhcp/dhcp.conf içinde:

"option domain-name-servers 192.168.56.1;" diyerek dns sunucu adresimizi tanımlamalıyız.

* Apache2'nin yapacağı iş, dns sonucu gösterilecek sayfayı ulaşılabilir kılmak. Bunun için kullanıcıya göstermek istediğimiz sayfanın web tasarımı kodları .conf dosyasında da yazdığı gibi /var/www/html/ dizini altında olmalı. Ben yeni bir sayfa oluşturmayıp hazır olan index.html sayfasını gösterdim.

* Dns kısmını ayarlarken:

/etc/bind/named.conf.options dosyasının sonuna aşağıdaki kısım eklenmeli. Burada bir zone tanımı yapıyoruz. "hurriyet.com" diye gelen isteklere dns sunucumuzun hangi dosyadan bakacağını söylüyoruz. 

$sudo vim /etc/bind/named.conf.default-zones

zone "hurriyet.com" {
        type master;
        file "/etc/bind/hurriyet.zone";
        allow-update { none; };
};

tanımladığımız /etc/bind/hurriyet.zone dosyasını oluşturmalıyız ve içeriği aşağıdaki gibi olmalı:

$sudo vim /etc/bind/hurriyet.zone






















Son olarak DNS sunucumuzu başlatırken: $sudo /etc/init.d/bind9 start

Sanal makinadan hurriyet.com sayfasına ulaşmak istersem:


$dig hurriyet.com çıktısı:

 
Görüşmek üzere.

29 Ekim 2015 Perşembe

Libreoffice Çalışmalarım 1

Herkese merhaba,

Bu dönemin başından beri Libreoffice ile ilgili çalışıyorum. Derleme ve yama gönderme nasıl oluyor diye de bir yazı yazmıştım. Sonrasında neler yaptığımdan bahsetmek istiyorum.

İlk yamam kabul edildikten sonra, Libreoffice arayüzüne(UI) özellik eklemek, iyileştirmek üzerine çalışmaya başladım. 

Üzerinde çalıştığım özellik Draw aracındaydı. Şimdiye kadar, şeffaf arka plan görünürlüğü, yapılandırma dosyasından sağlanmış. Ancak geliştiriciler bunun yapılandırma dosyasından bağımsız olmasını istiyorlardı. İstediklerini yapıp yama hazırladım.

Yamanın alınma süreci ise bence bir miktar heyecanlı geçiyor :) Her yollanan yama Jenkins ile 3 platformda kontrol ediliyor. (Linux, MacOS ve Windows) Sorunsuz derlenen yamalara ayrıca geliştiriciler de bakıyor. Sonunda herşey uygun şekildeyse yamayı kabul ediyorlar. 

İki gün önce yamam alındı. Birkaç gün sonra yayınlanacak olan 5.1 sürümünde bu özellik kullanılabilir olacak :)

                              Yamadan önce                                   Yamadan Sonra


Bu haftasonu gerçekleşecek bug hunting etkinliğinden sonra da güzel haberler vermek dileğiyle :)

30 Eylül 2015 Çarşamba

Libreoffice Derlemek ve Gerrit İle Yama Göndermek

Libreoffice'in ne olduğunu bilmeyen de yoktur ama yine de kısaca bahsetmiş olayım. Libreoffice bir masaüstü ofis paketidir. Uzun da bir geçmişe sahip. Staroffice adı altında başlayıp, daha sonra Openoffice olarak geliştirilmiş ve en son Libreoffice adıyla hala geliştirilmeye devam ediyor. Bunun güzel bir yanı da uğraştığımız birşey hakkında rahatça belge bulabilmek oluyor.

Gelelim derleme işlemine. Bekleme kısmını saymazsak çok da zor bir yanı yok. Büyük bir proje olduğu için birazcık sabırla beklemek gerekiyor. Ben Ubuntu 15.04 kullandığımdan izlediğim adımları yazacağım. Tüm Linux türevleri için de sayfa oldukça güzel anlatmış.

Bağımlı paketleri kuralım:

$ sudo apt-get build-dep libreoffice

Depoyu yerelimize alalım ve proje dizinine geçelim:

$ git clone git://anongit.freedesktop.org/libreoffice/core libreoffice
$ cd libreoffice

Make işleminden önce betik dosyasının hatasız çalıştığını görmeliyiz:

$ ./autogen.sh

Daha sonra uzunca bekleyeceğimiz make komutunu çalıştıralım:

$ make -j[çekirdek sayisi]

Derlemeden sonra writer'ı çalıştırıp Libreoffice5'in çalıştığından emin olalım:

$ instdir/program/soffice --writer

Bir de derleme yaparken karşılaştığım bir hata:
(libkrb5-dev paketini kurduğumda düzelmişti)

configure: error: could not find function 'krb5_sendauth' required for Kerberos 5

Yazarın notu :D
Geliştirme yapmak işteyenler için KDevelop aracı öneriliyor. Bunun için modüllerin kdevelop ile açılabilir olması gerekiyor.
"make kdevelop-ide-integration" komutu ile modüller Kdevelop ile açılabilir hale geliyor.

Yama Yollarken:

Gerrit kod işbirliği aracı olarak kullanılıyor. İlk kez yama yollayanlar için önce buraya kendinizi eklemeniz gerekiyor. Eklerken Lisans kısmı için libreoffice@lists.freedesktop.org a bir mail atmanız gerekiyor.
mail başlığı:
<your name> license statement

içeriği:
"
 All of my past & future contributions to LibreOffice may be
   licensed under the MPLv2/LGPLv3+ dual license.

Gerrit kullanmak için adımlar:

$ ./logerrit setup komutunu çalıştırdıktan sonra oluşan "/home/[username]/.ssh/id_rsa.pub" içerigini gerrit üyeliğimizde ayarlar sekmesinden ssh kısmına eklemeliyiz.
 
$ ./logerrit test komutu sorunsuz çalışıyorsa gerrit aracını kullanabiliriz. 

Daha sonra yeni bir dal oluşturup değişiklik yaptığımız dosyaları ekleyip commit yapacağız.

$ git checkout -b <yeni dal adı>

$ git add dosya (tüm değişiklik yapılan dosyalar için 'git add .')

$ git commit (burada commit mesajı ile bug numarasını ilişkilendirmeliyiz. bunu da commit mesajına "tdf#<bug _id>" ekleyerek yapıyoruz )

Son olarak gerrit'e bu commiti yollayacağız:

$ ./logerrit submit master

Gerrit sayfasından da commitinizi görebilirsiniz :)

Kolay gelsin.

9 Mayıs 2015 Cumartesi

Metasploit Framework Giriş

Metasploit Framework, güvenlik açıklarının bulunmasını ve bulunan açıkların kullanılmasını sağlayan bir araçtır. Ruby ile sıfırdan tekrar yazılmıştır.(öncesinde Perl ile yazılmış) Kullanılan terimlerin anlamlarını öğrenip birşeyler denemeye başlayınca ne olduğu insanın aklında daha çok şekilleniyor :) 

Terminoloji:

Exploit: Bir sistemin ya da programın zayıflığından faydalanarak sisteme girişi sağlayabilen ya da zarar veren yöntemlerin tamamıdır.

Local Exploit: Oturum açılmış halde olan sistemde bulunan servis veya yazılımların zayıflıklarını sömüren exploit türüdür.

Remote Exploit: Ağ üzerinden uzaktaki sistemin zayıflıklarını sömüren exploit türüdür.

Payload: Hedef sistemde istenilen eylemi gerçekleştiren bileşendir. Exploitten sonra çalışır.

Auxiliary: Modüller için geliştirilen ek programlar, yardımcı araçlardır. Exploit öncesi sistem hakkında bilgi toplama amaçlı kullanılırlar.

MsfConsole, içinde pek çok hazır exploit bulunduran aynı zamanda bu exploitleri yerel ve uzak erişim için yapılandırabilen bir yazılımdır.

Ubuntu'ya Msfconsole kurulumu için buraya bakabilirsiniz.

MsfConsole:


help: Kullanabileceğimiz komutları ve ne işe yaradıklarını görebiliriz.

Komut          Açıklama
banner        MsfConsole açılış ekranını gösterir.
info             Bir veya daha fazla modül hakkında bilgi verir.
irb               İrb scripting modunu getirir.
jobs            Yapılan işleri gösterir ve düzenler.
load            Eklenti yüklenmesi için kullanılır.
loadpath     Belirtilen yoldan istenilen modülü/exploiti yükler.
route           Oturum trafiğinin yönlendirilmesini sağlar.
save            Etkin veriyi kaydeder.
search         Modül ismi veya açıklamalarda arama yapar.
sessions      Aktif oturumları gösterir ve oturum bilgisi verir.
set               Payload seçiminde bir verinin atamasını yapar.
show           Belirtilen modülü veya tüm modlleri listeler.
sleep           Belirtilen zaman zarfında hiçbir işlem yapılmaması gerektiğini belirtir.
use              Modül seçer.
version        Konsol uygulamasının versiyonunu gösterir.

show exploits: MsfConsole platformundaki exploitleri listeler.
use <exploit>: Exploit seçmek için kullanılır.
show targets: Seçilen exploitin hangi sistemleri etkilediğini görmek içn kullanılır.











set targets <hedefno>: Hedefi seçmek için kullanılır. 
show payloads: Msf’de bulunan payloadları listelemek için kullanılır.


info <payload_adi>: İstenilen payload hakkında detaylı bilgi döndürür.
set PAYLOAD <payload_adi>: Payload seçmek için kullanılır.
show options: Yapılacak saldırı için seçeneklerin görülmesinde kullanılır. "Required" sütununda yes ile belirtilmiş olan seçeneklerin ayarlanması gerekir.


set <RHOST, RPORT, LHOST, LPORT>: Required kısmındaki bilgileri girmek için kullanılır.
exploit:  Gerekli tüm yapılandırma bittikten sonra saldırı başlatmak için kullanılır.

Güvenlik yeni yeni ilgimi çeken bir konu. Öğrendikçe daha fazla yazmaya çalışacağım. Kolay gelsin :)

7 Mart 2015 Cumartesi

Cocci İle Otomatikleştirilmiş Yama Oluşturma

Yaklaşık 3 hafta önce OPW'nin 10. turu başladı. OPW'yi merak edenler için, buraya bakabilirsiniz.

Yazının geri kalanında Coccinelle ile nasıl betik yazıldığını, yama hazırlarken bu betiğin dosyaya nasıl uygulandığını anlatacağım.

Coccinelle, otomatik olarak analiz yapan ve C kodunu yeniden yazabilen bir araç. Asıl yararı aynı düzeltmeleri her dosya için tek tek yapmak yerine, bir şablon oluşturup onunla birçok dosyayı tek seferde tarayayıp değiştirebilmesi. Desteklediği betik dilleri Python ve OCaml.  (sudo apt-get install coccinelle)

Betik yazarken genel yapı:

@@
degisken_tanımları
@@
Kurallar

İstersek ilk @@ işaretlerini @Betik_Adi@  şeklinde de kullanabiliriz. Bu kullanım uzun betikler yazarken okumayı kolaylaştırır.

Daha sonra kurallarda kullanacağımız değişkenleri tanımlamalıyız. Kural kısmı ise tamamen betik ile ne değiştirmek istediğimize bağlı.

Çok basit bir örnekle başlayalım:
Örnek1:

"foo.c" dosyasındaki C kodumuz şöyle olsun:
int main()
{
    foo();
    g(); 
    foo();
    g();
    foo();
}

Bu dosyadan foo() fonksiyonlarını kaldıralım. "-" ile kaldırılacak, "+" ile eklenecek alanı en genel şekliyle tanımlamalıyız.
foo.cocci dosyası:

@@
@@

- foo();
Betiği uygularken:

$ spatch -sp_file cocci_betigi -in_place uygulanacak_dosya_yolu


spatch yukarıdaki parametreleri ile betik dosyasını uygulayarak değişiklik olan yerleri gösterir.

Örnek2:
Aşağıdaki C kodunda kullanılan _cancel_timer_ex fonksiyonu yerine  del_timer_sync fonksiyonu kullanmak istersek elle tek tek değiştirmek yerine cocci betiği yazabiliriz.

C kodu: drivers/staging/rtl8712/os_intfs.c

Cocci betiği:
@@ expression x; @@

 - _cancel_timer_ex (&x);
+ del_timer_sync (&x);

Çıktı:




 

Örnek3: 
Gereksiz olan parantezleri kaldırmak için betik yazalım.
C kodu:



Cocci betiği:
@@
identifier i;
constant c;
type t;
expression e;
@@

t i =
-(e
+e
<<
-c);
+c;


Çıktı: Farkedildiği gibi değişecek satır(ların) kalıplarına göre tarif yapılıyor. Expression, constant, identifier gibi tipleri kullanırken değiştirmek istediğimiz satırdakilerle örtüştüğünden emin olmalıyız. Ayrıca yazdığımız betiğin, doğru olan satırlarının değiştirmiyor olmasına da dikkat etmeliyiz.

Örnek4:
Yazacağımız betikte Python kullanmak istersek @script:python@ diye belirtmemiz gerekiyor.
C dosyası:
int main () {
        foo(a0);
        bar();
}


Cocci betiği: 
@a@
identifier x;
@@
foo(x);
@script:python b@
x << a.x;
y;
z;
@@
print y
coccinelle.y = x
coccinelle.z = "something"
print y
@c@
identifier b.y;
identifier b.z;
identifier a.x;
@@
- bar();
+ matched_bar(y,z,x);


Çıktı:



Yazdığınız betik kurallara uygun mu, bir hatası var mı diye bakmak için:
$ spatch --parse-cocci deneme.cocci

Bu yazı sadece aklınızda bir fikir oluşması için giriş niteliğinde verilmiş örnekleri içeriyor. Coccinelle ile uğraştıkça daha karmaşık betikler yazılabilir. Daha fazla demo için buraya bakabilirsiniz. Kolay gelsin...