Eylül ayındaki Uber ihlalinde, saldırganlar kimlik bilgilerini belirli bir PowerShell komut dosyasında buldu. Ancak, saldırganların ortama erişmelerine izin verecek kimlik bilgilerini bulabilecekleri, daha az gösterişli ama bir o kadar da zarar verici birçok yol var. Bunlar, ortak yerel kimlik bilgilerini, benzer parolalara sahip yerel kullanıcıları ve ağ paylaşımlarındaki dosyalarda saklanan kimlik bilgilerini içerir.
Araştırmamızda, yanlamasına hareket etmek veya hassas bilgileri çıkarmak için güvenliği ihlal edilmiş bir makineden – herhangi bir güvenlik açığından yararlanmadan – ne tür bilgilerin çıkarılabileceği sorusuyla karşılaştık. Burada kullandığımız tüm araçlar GitHub depomuzda mevcuttur.
Kuruluşlar, SSH, FTP, Telnet veya RDP protokollerini kullanarak sunucularda ve veritabanlarında kimlik doğrulaması yapmak için çeşitli araçlara güvenir ve bu araçların çoğu, kimlik doğrulamasını hızlandırmak için kimlik bilgilerini kaydeder. Bir saldırganın açık metin olmayan kimlik bilgilerini nasıl çıkarabileceğini göstermek için bu tür üç araca — WinSCP, Robomongo ve MobaXterm — bakıyoruz.
WinSCP: Gizlenmiş Kimlik Bilgileri
Bir etki alanı denetleyicisi mevcut olmadığında, kullanıcı, başarılı bir etki alanında oturum açtıktan sonra yerel olarak kaydedilen önbelleğe alınmış kimlik bilgilerini kullanarak sistem kaynaklarına erişebilir. Kullanıcı önceden yetkilendirildiği için, geçmişte kullanıcının kimliğini doğrulayan etki alanı denetleyicisi kullanılamıyor olsa bile kullanıcı, önbelleğe alınmış kimlik bilgileri aracılığıyla etki alanı hesabını kullanarak makinede oturum açabilir.
WinSCP, uzak makinelere SSH aracılığıyla bağlanmak için kullanılan kimlik bilgilerini kaydetme seçeneği sunar. Kimlik bilgileri, Windows kayıt defterine (Computer\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Sessions) kaydedildiğinde gizlenmiş olsa da, hiçbir şekilde şifrelenmezler. Gizlemek için kullanılan algoritmayı bilen herkes kimlik bilgilerine erişebilir.
WinSCP’nin kaynak kodu GitHub’da mevcut olduğu için şaşırtma algoritmasını bulabildik. Kimlik bilgilerini gizlemek için aynı algoritmayı uygulayan bir araç kullandık ve kimlik bilgilerine açık metin olarak erişim sağladık.
Saklanan kimlik bilgilerinin güvenliğini sağlamak için bir gizleme algoritması uygulamak, kolayca tersine çevrilebileceği ve kimlik bilgilerinin çalınmasına yol açabileceği için en iyi uygulama değildir.
Robomongo: Gizli Anahtar Değil
Robomongo (şimdi Robo 3T), Mongo veritabanı sunucularına bağlanmak için kullanılan bir MongoDB istemcisidir. Kimlik bilgilerinizi kaydettiğinizde, bunlar şifrelenir ve bir robo3t.json JSON dosyası. Kimlik bilgilerini şifrelemek için kullanılan gizli anahtar da yerel olarak açık metin olarak bir dosyaya kaydedilir. robo3t.key dosya.
Bu, bir makineye erişim sağlayan bir saldırganın, kimlik bilgilerinin şifresini çözmek için şifresiz metin olarak kaydedilen anahtarı kullanabileceği anlamına gelir.
Anahtarın şifreyi şifrelemek için nasıl kullanıldığını anlamak için Robomongo’nun GitHub’daki kaynak koduna baktık ve Qt’den SimpleCrypt lib’i kullandığını öğrendik. Robomongo, kimlik bilgilerini güvenli bir şekilde saklamak için şifreleme kullanırken, gizli anahtarın açık metin olarak kaydedilmesi en iyi uygulama değildir. İş istasyonuna erişimi olan herhangi bir kullanıcı kimlik bilgilerinin şifresini çözebileceğinden, saldırganlar potansiyel olarak okuyabilir. Bilgi insanların okuyamayacağı bir şekilde kodlanmış olsa bile, belirli teknikler hangi kodlamanın kullanıldığını belirleyebilir ve ardından bilginin kodunu çözebilir.
MobaXterm: Parolanın Şifresinin Çözülmesi
MobaXterm, SSH, Telnet, RDP, FTP vb. gibi çeşitli protokolleri kullanarak uzaktaki makinelere bağlanmak için güçlü bir araçtır. MobaXterm içinde kimlik bilgilerini kaydetmek isteyen bir kullanıcıdan, hassas verilerini korumak için bir ana parola oluşturması istenecektir. Varsayılan olarak, MobaXterm ana parolayı yalnızca yeni bir bilgisayarda ister.
Bu, ana parolanın bir yere kaydedildiği ve MobaXterm’in şifrelenmiş kimlik bilgilerine erişmek için bu parolayı alacağı anlamına gelir. MobaXterm tarafından erişilen tüm kayıt defteri anahtarlarını ve dosyaları eşleştirmek için Sysinternals Suite’ten Procmon’u kullandık ve Windows kayıt defterinde kayıtlı ana parolayı bulduk (Computer\HKEY_CURRENT_USER\SOFTWARE\Mobatek\MobaXterm\M). Kimlik bilgileri ve parolalar sırasıyla C ve P kayıt defteri anahtarlarına kaydedilir.
Başlangıçta, DPAPI kullanılarak şifrelenmiş olan ana parolanın şifresini çözemedik. Sonunda, DPAPI kullanırken her zaman aynı olan ilk 20 DPAPI baytının kaldırıldığını anladık. İlk 20 baytı eklediğimizde, ana parolanın SHA512 hash’ini elde etmek için DPAPI şifresinin şifresini çözebildik. Bu karma, kimlik bilgilerini şifrelemek ve şifresini çözmek için kullanılır.
Burada, kimlik bilgilerini güvenli bir şekilde saklamak için kullanılan şifreleme anahtarı, DPAPI kullanılarak kaydedilir. Bu, yalnızca kimlik bilgilerini kaydeden kullanıcının bunlara erişebileceği anlamına gelir. Ancak yönetici erişimine sahip bir kullanıcı veya kurbanın oturumuna erişim sağlayan bir saldırgan da makinede saklanan kimlik bilgilerinin şifresini çözebilir.
Riskleri Bilin
Geliştiriciler, DevOps ve BT, uzak makinelere bağlanmak ve bu erişim ayrıntılarını yönetmek için çeşitli araçlar kullanır. Satıcılar bu hassas bilgileri en güvenli şekilde saklamak zorundadır. Ancak şifreleme her zaman istemci tarafındadır ve bir saldırgan, kimlik bilgilerinin şifresini çözmek için araç davranışını çoğaltabilir.
Her zaman olduğu gibi, burada tartıştığımız her sorunu çözebilecek sihirli bir çözüm yok. Ancak kuruluşlar, şu anda kullandıkları hizmetleri inceleyerek başlayabilirler. Doğru bir risk matrisi oluşturabilir ve depoladıkları hassas veri türlerini ve kimlik bilgilerini daha iyi anlayarak veri ihlallerine daha iyi hazırlanabilirler.