twitterlinkedinemail
pentest etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
pentest etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

3 Nisan 2014 Perşembe

Bir Pentest Hikayesi

Bu sefer teknik olmayan bir konuyla karşınızdayım. Başlıktan da anlaşıldığı gibi sizlere hikaye anlatacağım :)
Gerçekleştirmiş olduğum(uz) penetrasyon testlerinde karşılaştığımız problemleri, çözümleri, tecrübe edindiğimiz konuları, komik olayları vs.. anlatan ama detaylarında yeni başlayan arkadaşlar için faydalı olabilecek bir yazı dizisi planlamaktayım.  



Sabahın 05:00 sularında uyandırıldım. Uyku sersemliğiyle telefonda anladığım kadarıyla sektöründe Türkiye'nin önemli firmalarından birinin terminal sunucusu ransomware saldırısına uğramış. Hemen hazırlandım ve yola çıktım. Diğer ekip arkadaşlarımda saldırıya maruz kalan firmaya doğru yol aldılar.

Firmaya vardığımızda tahmin ettiğimiz şekilde sunucuya bir text dosyası bırakılmış ve ilgili firmanın verilerini encrypt ettiğini ve encrypt edilen verilerin açılması için fidye istenmekteydi.

Birkaç saat boyunca çeşitli yöntemlerle (firewall logları ve ilgili/şüpheli makineler üzerinde windows logları, son çalıştırılan dosyalar, şüpheli dosyalar, sistem başlangıcı, regedit, çalışan servisler, portların taranması, dinlenen portların tespiti vs..) saldırıya dair izleri araştırdık.

Bu analiz süreci devam ederken IT sorumlusuna enfekte olmuş sunucunun Local Administrator parolasının ne olduğunu sordum. Ve tahmin ettiğim yanıt hiç gecikmeden geldi: 123456 :)
Bu tip hacking saldırıları genellikle; zayıf parola kullanımıyla beraber dışarıya açık olan uzak masaüstü servisi (RDP) ve MSSQL servisi, eski işletim sistemi zafiyetleri, mail yoluyla gönderilen fatura vb. gibi görünen zararlı dosyaların kullanıcının sisteme bulaştırılmasıyla böyle sonuçlara zemin oluşturmaktadır.

Firma çok şanslıydı.. Logları incelememiz sonucunda bu olayın başlangıç zamanından tam 1 dakika önce şirketimizin sistem çözümleri departmanında çalışan arkadaşımız tarafından farklı bağımsız bir lokasyona yedek alınmıştı. Bu yüzden verilerin kurtarılmasıyla uğraşmamıştık direkt olarak çözüm odaklı davrandık çünkü business continuity (iş sürekliliği) önemlidir. Aynı veya benzer pozisyondan gol yiyebilirsiniz. Bu yüzden olayın kaynağı tespit etmek, saldırı yüzeyini analiz etmek ve gedikleri tıkamak gerekir.
Bu arada siber olay müdahale çerçevesinde yapılan analizler neticesinde bu ransomware vakasından tek bir sunucu etkilenmişti ve tehdit aktörünün yerel ağda başka sunuculara karşı yatay yayılım yapmadığı gözlemlendi.

Çalışmalar sabahın erken saatlerinden gece saat 02:00'a kadar sürdü ve bu konuyu başarılı bir şekilde sonlandırmış olduk. Tabi müşterimizin artık siber güvenlik hususunda farkındalığı vardı ve bu konuda yapılması gerekenleri bütçeleri dahilinde hızlıca gerçekleştirmeye karar verdiler. Müşteri siber güvenlik durum ve ihtiyaç analizi yapıldı, bir takım hizmet/ürün kalemi ortaya çıkmıştı, onlardan birisi de tabi ki pentest (penetrasyon testi/sızma testi) idi :)

Pentest için anlaşılıp çalışma tarihi aldıktan sonra hazırlığımızı yapıp belirlenen tarihte firmaya gittik. Vakit kaybetmeden testlere başladık. Sırasıyla hibrit (otomatik ve manuel) bir şekilde önce sistemleri keşfetme-bilgi toplama, zafiyet taraması ve son olarak da tespit edilen bulgular özelinde exploiting işlemlerini yaptık. Ayrıca, sosyal mühendislik kapsamında phishing testi de yapılacaktı. Bunun için arama motorlarından elde ettiğimiz firma çalışanlarının mail adreslerine belirlediğimiz senaryo kapsamında zararlı yazılım (trojan) bulaştırılmaya çalışıldı. 21 kişiden 13 tanesi zararlı yazılımı açtı ve bilgisayarına bulaştırmıştı. Bu rakamlar çok tehlikeli..

Testin son demleriydi, elde ettiğimiz bulguları toparlıyorduk. Ben son kez sunucuların bulunduğu IP bloğunda farklı metotlarla tekrar bir port taraması gerçekleştirdim ve önceden keşfedemediğimiz bir sunucu keşfettim. 8090 portunda Apache Tomcat koşuyordu. Hemen web browserden kontrol ettim. Default Apache Tomcat parolalarını denedim ve bir tanesi tuttu. Yönetim bölümünün Deploy kısmından örnek ekran görüntüsünde görüldüğü gibi içeriye komut çalıştırabileceğim basit bir JSP shell (cmd) import ettim:

Yüklenen "cmd" isimli shell ile Windows üzerinde SYSTEM yetkileriyle komutlar yürütebilecektik. Bu shell ile Windows için Administrator yetkilerine sahip bir kullanıcı hesabı oluşturuldu ve bu kullanıcı Remote Desktop User grubuna dahil edilerek işletim sistemine uzaktan bağlantı sağladık. Daha sonra bu işletim sisteminde daha önceden oturum açmış olan kullanıcıların şifrelerini/parolalarını mimikatz aracıyla ele geçirdik.
Elde edilen bu şifreler/parolalar ile networkte bulunan diğer (SQL Server, SharePoint, Exchange vs..) sunuculara erişim sağlandı. Tüm sistem elimizin altındaydı. Son olarak Domain sunucusuna sızdığımızı IT müdürüne bildirdik. Müdür telaşla gelip "testi sonlandırın artık, tüm sistem deşifre oldu" demesiyle işte o zaman yüzümüzde tebessümler eksik olmuyordu.. :)