Merhaba arkadaşlar, bu yazımızda Linux ortamlarda shell scripting ile çeşitli araçlar geliştirirken anonim kalmamız gerektiği durumlarda dikkat edilmesi gereken bir kaç husustan örnekleriyle birlikte bahsedeceğim.
Başka ellerde yazılmış ve sistemleriniz üzerinde kullanmadan önce her seferinde kaynak kod analizi yapmak zorunda kaldığınız araçları kullanmaktansa hem güvenliğiniz, hemde kod becerinizi zinde tutmak için kendi araçlarınızı kullanıyor olmak önemli bir faktör. Amerika'yı yeniden keşfetmeye varabilecek durumlarda bu tezimiz çürüyebilir, evet. Ancak ufak araçlarınızı kendiniz yazıyor olmak hem keyif verecek hemde daha farklı bakış açıları kazanmanızı sağlayıp aşağıda ki bir kaç örnekte de göreceğimiz üzere kullandığınız sistemlerin işleyişini anlamak ve o sisteme tam anlamıyla hakim olmanızı sağlayacaktır. Hele ki söz konusu dil "shell scripting" ise artık sisteminizin direk kendisi ile konuştuğunuzu unutmayın.
Peki nedir bu shell scripting?
Unix sistemlerde komutları yorumlamak ve yönetmek için kullandığımız bir
programdır aslında kabuk (shell). Bir başka değişle GUI üzerinden yaptığınız her şeye ek olarak, sistemsel bir çok olayla sistem arasında ki tercümandır shell scripting. Yani buradan da anlayabileceğimiz gibi doğru komutlar ile birlikte GUI'den çok daha etkili kullanılabilir. Shell scripting ile programları, dosya sistemlerini çalıştırabilir, bilgisayar kodunu derleyebilir, bir sistemi işletebiliriz. Kısacası bilgisayarımızı en etkili şekilde yönetebiliriz. Bu da demek oluyor ki sistemde en ince ayrıntıya kadar dokunabiliriz...
Biz ise bu yazımızda bu gücü kendi güvenliğimizi yada bir başka değişle kendimize anonim bir kimlik sağlamak için kullanacağız. Öncesinde bir çok araçta gördüğünüz ve "Nasıl yapılıyor ki?" dediğiniz bir kaç ufak örnek vereceğim sizlere. Bu yazı sonrasında kendi araçlarımızı yazarken, araçlarımızın güvenli olduğu kadar, estetikte görünmesini sağlayacağız.
Az laf, çok iş...
#!/bin/bash
Yazacağımız programın ilk satırında ki bu girdi ile beraber programımızın /bin/ dizini altında ki bash tarafından yorumlanacağını sistemimize belirtmiş oluyor.
personelheader(){
clear
$blue
echo "*****************************************************************************************"
echo "* NHG Team v$versionBase | Serhatgksu 2017 | http://github.com/serhatgksu * | [CTRL+C] Exit | *"
echo "*****************************************************************************************"
}
Bu komut ile yukarıda ki çıktısında da görebildiğiniz üzere yazacağımız araç için bir header oluşturduk ve program her başlatıldığında bu ve yada sizin kendiniz için oluşturduğunuz farklı bir tasarımda ki header terminal ekranına basılacaktır.
logo(){
echo -e " "
echo -e " "
echo -e ".##....##..######...##.....##....########.########....###....##.....##"
echo -e ".###...##.##....##..##.....##.......##....##.........##.##...###...###"
echo -e ".####..##.##........##.....##.......##....##........##...##..####.####"
echo -e ".##.##.##.##...####.#########.......##....######...##.....##.##.###.##"
echo -e ".##..####.##....##..##.....##.......##....##.......#########.##.....##"
echo -e ".##...###.##....##..##.....##.......##....##.......##.....##.##.....##"
echo -e ".##....##..######...##.....##.......##....########.##.....##.##.....##"
echo -e " "
echo -e " "
}
Bu komut ile ise yine yukarıda gördüğümüz üzere aracımız çalıştırıldığında takımımızın ASCI art logosunu ekrana basıyor. Echo komutlarıyla bunu satır satır yapabileceğiniz gibi aşağıda ki örnekte görebileceğiniz gibi base64 encode ve gzip kullanarak da, sytax'dan dolayı kullanamadığınız bazı ASCI Art örneklerinde yaşayacağınız sorunların önüne geçebilirsiniz...
logo2(){
# ########::'########:'########::'########::'########:'##::: ##:
# ##.... ##: ##.....:: ##.... ##: ##.... ##: ##.....:: ###:: ##:
# ##:::: ##: ##::::::: ##:::: ##: ##:::: ##: ##::::::: ####: ##:
# ########:: ######::: ##:::: ##: ########:: ######::: ## ## ##:
# ##.. ##::: ##...:::: ##:::: ##: ##.....::: ##...:::: ##. ####:
# ##::. ##:: ##::::::: ##:::: ##: ##:::::::: ##::::::: ##:. ###:
# ##:::. ##: ########: ########:: ##:::::::: ########: ##::. ##:
#..:::::..::........::........:::..:::::::::........::..::::..::
base64 -d <<< "H4sIAPGSXlgAA32PUQ7AIAhD/zkFiR/+cYDe/2BTKUHUjCyutit5k944QMqnWXMAOk4Zh42ZmtKA
27zyln1wFyVv1bxy3kWTT0McpWfuD/k13EV39gldc3MG5/cFf/ybS7UWxP9bRa3QWz9zdsSBMF/G
2RWY+zeZR0fkA98vJ64CAgAA" | gunzip
}
Yukarıda ki örnek kodu çalıştığınıda ortaya çıkan görüntü, yukarıda ki kodda "#" ile yorum satırı olarak belirttiğimiz REDPEN olacaktır.
Arayüzden bu kadar bahsetmenin yeterli olacağı kanısındayım. Şimdi asıl önemli nokta olan noktaya yani aracımızın sistemle haberleşip, sistemden belli alanları gerek spoof ederek, gerekse farklı alt yapıları kullanarak nasıl anonim kalacağını kodlamaya.. Bu kısımda da yine örneklerle devam edeceğiz.
function temizlikVakti{
killall -q chrome dropbox iceweasel skype icedove thunderbird firefox firefox-esr chromium xchat hexchat transmission steam
echo -e -n "Dangerous applications killed"
bleachbit -c adobe_reader.cache chromium.cache chromium.current_session chromium.history elinks.history emesene.cache epiphany.cache firefox.url_history flash.cache flash.cookies google_chrome.cache google_chrome.history links2.history opera.cache opera.search_history opera.url_history &> /dev/null
echo -e -n "Cache cleaned"
}
Yukarıda belirttiğimiz fonksiyonumuz sayesinde bilgisayarımızda kurulu bulunan tehlike arz edebilecek uygulamaları "
killall -q" parametresiyle birlikte kapatıyor ve yine tuttukları cache bilgileriyle bizi sanal alemde tehlikeye sokabileceğini düşündüğümüz tüm uygulamaların ise cache verilerini "
bleachbit -c" parametresiyle birlikte kullandığımı "
&> /dev/null" değeriyle birlikte temizliyoruz.
***
BleachBit, değerli disk alanını boşaltmak, gizliliği korumak ve önemsiz dosyaları kaldırmak için sistemimizde bulunan gereksiz dosyaları silen bir araçtır. Önbellek, geçici dosyalar, çerezler ve kırık kısayollar da dahil olmak üzere kurtulmamız gereken bir çok veriyi sistemimizden temizler. Epiphany, Firefox, Flash, Java, KDE, OpenOffice.org, Opera, RealPlayer, rpmbuild, VIM, XChat ve daha bir çok uygulamaya direk etki edebilir bir araçtır.
function ipAdresim {
echo -e "\nIP Adresim :\n"
sleep 1
wget -qO- http://ip.frozenbox.org/
echo -e "\n\n----------------------------------------------------------------------"
}
Ufak bir hatırlatma olarak bu fonksiyonuda paylaşmakta fayda var. Yapacağımız işlemlere başlamadan önce sistemimizin sahip olduğu gerçek ip adresi bilgisine sahip olmamız, işlemlerimiz sonrası bize karşılaştırma ve anonimliğimizi teyit etme fırsatı verecektir.
Yazımızın bir sonra ki bölümünde aracımızı;
- Nasıl TOR network'ü üzerinden internete çıkartırız?
- Hostname bilgimizi nasıl spoof ederiz?
- Swap alanını ve ram üzerinde ki cache veriyi temizleyerek anti-forensic bir hale getirebiliriz? gibi sorulara cevap arayacağız.