RDP Ataklar için Kritik Önlemler

Dışarıya açık sistemler her zaman bir güvenlik zafiyeti oluşturmaktadır. Ancak çoğunlukla hizmet sunmak amacı başta olmak üzere aslında bu en temel iş ihtiyacı olduğu için dışarıya açık pek çok system olduğunu görüyoruz. En temel internet üzerinde gezdiğimiz bütün sitelerin herkese açık olduğunu düşünürseniz aslında çok ciddi bir büyüklükten söz ediyoruz. Böylesine büyük bir okyanusta benim web sitemi, uygulamamı veya sistemimi mi bulacaklar diye düşünmeyin. Çünkü hep söylediğim bir şey olan “değişen ve gelişen teknoloji ile yeni nesil atakları görüyoruz” artık AI kullanarak yapılan atakları görünce gerçekten çok yerinde bir cümle oluyor. Dahası makalemizdeki gibi RDP temelli ataklar artık herkesin kolaylıkla yapabildiği bir atak türü haline gelmiş durumda. Yani çok büyük alışveriş veya sosyal medya platformlarını düşündüğümüz zaman gerçekten inanılmaz ataklar ile karşı karşıyalar, ancak ben daha temel bir konuya odaklandım. Bunun en temel sebebi ise her ne kadar şifreleme atakları yüzünden pek çok müşteri artık dışarıya açık RDP portunu kapatsa da hala ne yazık ki bizim güvenlik ekibine haftada en az 1-5 arası vaka gelmektedir. Bu da aslında bir şekilde kısa süreli, POC amaçlı, gözden kaçan veya unutulan RDP sistemlerinin hala ciddi bir tehlike oluşturduğunu gösterir. Güncelleme 13.05.2019 Makaleye gelen yorumlardan sanki tüm RDP sistemleri için öneriler tadında bir makale beklentisi oluşmuş. Bu kadar uğraşacağına MFA yaparız gibi yorumlar görüyorum. Arkadaşlar zaten VPN yapsanız iş bitiyor, olay VPN, MFA yada sertifika doğrulama gibi kurumsal çözümleri kullanmayan müşteriler için kıssadan hisse öneride bulunuyorum. Aslında bende yukarıdaki konulardan gol yemiş birisiyim. Herkesin farklı bir hikayesi vardır benimkisi çok basit, udemy eğitimlerim için POC ortamı hazırladım, ancak VPN vs ile bağlanmak çok pratik gelmedi, içerisinde bilgi de yoktu ancak günün sonunda en değerli şeyim olan vaktimi kaybettim. Exchange Server ortamı, GPO ortamı derken birkaç günlük kurulmuş mis gibi sistem şifrelendi. Neyse ki demo, poc ortamları bizde hep ayrı fiziksel sunucu ve network de olduğu için prod ortam olan ÇözümPark bundan etkilenmiyor. Gerçi bunun içinde bulut yedek senaryomuz var ama oradaki kesinti bizi üzer. Bu durumda daha sonra ortak etkinlikle için kullandığımız birkaç ortamda meydana geldi. Tabiki bu işin kesin yöntemini sizler gibi bizde çok iyi biliyoruz. VPN. Fakat bazen ISP den kaynaklı, bazen danışmanın eğitmenin bulunduğu yer ve zaman nedeni ile T anında o RDP açılması gerekiyor 😊 Ama gel gör ki ne oluyorsa ya o sırada oluyor ya da her insan gibi bu yoğun gündemde unutuluyor. Peki bu iş gerçekten bu kadar riskli mi? Bende her seferinde kendime soruyorum çünkü genel olarak müşterilerimin büyük çoğunluğu kurumsal firma, durum böyle olunca acaba ne kadar makine vardır bu şekilde diye düşünmeden edemiyorum ve an itibari ile 2.3 milyon makinenin bu durumdan etkilenebileceğini görüyorum Bende bundan bir ders çıkardım. Madem bu işi çok iyi biliyoruz, elinde VPN imkânı olmayan, ip bazlı sınırlama imkânı olmayanlar için bir sıkılaştırma çözümü yapamaz mıyız? Aslında yapabiliriz. Benim temel 3 adımda RDP için sıkılaştırma yönetimim aşağıdaki gibidir; 1 – Administrator ismini hemen değiştirin. Yeni bir sistem kurduktan sonra varsayılan olan “Administrator” hesabı çok büyük tehlike içermektedir. Zaten otomatik yapılan atakların başında Administrator hesabına yapılmaktadır. Bunun için local GPO ile aşağıdaki yolu izleyebilirsiniz Gpedit.msc – Computer Configuration – Windows Settings – Security Settings – Local Policies – Security Options altına “Accounts: Rename administrator account” Örnek dışarıya açık bir sistemde en çok atak denemesi yapılan hesaplar aşağıdaki gibidir; ADMINISTRATOR Audit Test Ftp Warehouse Fax Lab Postgres User1 User2 Guest Webmaster Admin User Sistema Adm Archive Update İnfo Test2 Finans Muhasebe Report Görüldüğü gibi aslında bu işin temelinde kullanıcı hesabını tahmin etmek var, yani siz bundan sonraki diğer iki önlemi almasanız bile sadece bu hareket ile ciddi manada VPN’ siz, dış dünyaya açık bir RDP sistemi için sıkılaştırma yapmış olursunuz. Peki ikinci adım nedir? Aslında bu ilk adım ile beraber kullanıldığı zaman çok etkili bir koruma yöntemi oluyor. Lock Policy. Yani diyelim administrator hesabını değiştirdik ancak yine de tespit edildi veya tahmin edildi, bu durumda da 3 veya 5 veya size uygun bir yanlış deneme sayısından sonra otomatik hesabın lock olması. Tabi bu süreyi çok uzun tutmamak lazım aksi halde sizin de erişim sorunlarınız kaçınılmaz olur. Bunun için yine local GPO’ da aşağıdaki yolu izleyebilirsiniz. Computer Configuration – Windows Settings – Security Settings – Account Policies – Account Lockout Policy Altından ayarları kendinize göre yapabilirsiniz. Peki birisi hesabı buldu ve lock etti sisteme nasıl erişeceğim? Evet bu ihtimale karşın mutlaka “Reset account Lockout counter after” bölümünü kullanmanız lazım. Zaten atakları incelerseniz süreklilik gösterirken mutlaka 5dk veya 10dk ara verirler. Peki ikinci yöntem de tamam. Gelelim en son yönteme. Bu ise aslında yukarıdaki iki çözümden sonra sürekli loglarda atakları gördükten sonra aklıma gelen ve küçük bir araştırma ile benim gibi başkalarının da düşündüğü bir çözüm gördüm. Her ne kadar güvenli bir ortam oluştursam da sürekli sunucumu taciz etmeleri beni biraz rahatsız etti. Sonuçta bu hareketleri aşağıdaki iki log’ dan görebiliyoruz; 1 – Security loglarından; İkinci olarak Event Viewer- Application and Services Logs- Microsoft- Windows- RemoteDesktopServices-RdpCoreTS altındaki Operational loglarından event id 140 İlk log içerisinde kullanıcı bilgisi bu log içerisinde ise atak yapılan kaynak ip adresini görüyoruz. Tabi burada heyecanlanmayın, muhtemel bunlar zombi yani zararlı bulaştırılmış makineler olduğu için bunların üzerinden kimin size saldırı düzenlediğini bulmanız çok mümkün değil. Zaten size özel bir saldırı olmuyor genelde, makalemin başında söylediğim gibi karanlık veya derin web dediğimiz ortamda bir sürü otomatik RDP portu arayan ve kullanıcı adı şifre deneyen araçlar var. Ben buradan yola çıkarak şunu düşündüm, bu ip adreslerini otomatik alıp windows firewall üzerindeki bir kurala ekleyecek. Tamda bunu yapacağız. Öncelikle bir kural oluşturalım; Custom bir kural hazırlayacağız. Program sekmesinde “All programs” bölümünü seçip ilerliyorum. Protocol ve Port bölümünde ise “any” seçiyorum. Bu bölümde ise remote ip adres kısmına iki tane gerçek olmayan ip yazın. Son olarak bu ip adreslerinden gelen herhangi bir port isteğini yasaklayacak bir kural olması için “Block the connection” seçeneğini seçiyorum. Son olarak firewall kuralımız için bir isim seçiyoruz. Burası önemli, çünkü PS içerisinde hangi kurala ip adreslerini ekleyeceğini seçerken lütfen buraya yazacağınız ismi not edin. Kuralımız hazır, şimdi olay günlüğünden ip adreslerini alacak ve bu firewall kuralına yazacak bir PS lazım. Bunu aşağıdaki link üzerinden indirebiliriz; İndirdiğimiz dosyası örneğin ben C:\komut dizinine indirdim ve çalıştırdım. Gördüğünüz gibi ilk çalıştırmada 31 adet ip adresini yasakladı. Aslında PS süper çalışıyor ancak sorun sürekli bunu elle mi çalıştıracağız? Tabiki hayır. Bu durumda PS için zamanlanmış bir görev yapalım Buraya yazacaklarımız sırası ile aşağıdaki gibidir; Action: “Start a program” Setting Program/Script: “powershell.exe“ Add arguments (optional): -ExecutionPolicy Bypass C:\komut\RDPBlock.ps1 (Burada tabi siz PS için verdiğiniz isim ve path tanımlayın) Alt bölümdeki kutucuğu işaretleyerek finish dedikten sonra açılan yeni ekranda bu zamanlanmış görevler için özellikler penceresini açmış olacağız Burada yapmamız gereken değişiklik “Run whether user is logged on or not” olmalıdır. Bu sayede siz login olmasanız da PS arka planda çalışacaktır. Son olarak yetkili bir hesap ile zamanlanmış görevi tamamlıyoruz. Peki durumu biraz inceleyelim neler oluyor? Gördüğünüz gibi atak ortalama her 5dk da bir tekrarlanıyor. 5:03, 5:08, 5:13, 5:19 ve en son 5:36. Ancak 5.36 dan sonra dikkat ederseniz saatin 6:12 olmasına karşın tekrarlanmadığıdır. Bunun sebebi ise 77 adet ip adresini PS loglardan alıp kural içerisine eklemiştir. Biz tabi öyle bir sistem kurunca bize saldıranda biraz hırs yaptı ve ip sayısını arttırdı. Ancak ben zamanlanmış görevi her 5dk da bir çalışacak şekilde yaptığım için çok ilgilenmiyorum açıkçası. Özetle sistem otomatik olarak ip adreslerini eklediği sürece içim rahat. Peki bu ip adresleri maksimum kaç tane olabilir? Windows Firewall için limit 1000 tanedir.  1000 taneden fazla ip ile size saldırmaları durumunda zaten daha kurumsal bir çözüm kullanmanızı tavsiye ederim. Not: bu arada PS şöyle geliştirilebilir, örnek 10 gün veya 30 günden önce eklenen ip adresleri otomatik silinebilir bu sayede sistem otomasyona döner. Aşağıdaki komutlar ise son durumu kontrol etmeniz için gereklidir; (Get-NetFirewallRule -DisplayName “Block RDP Attackers” | Get-NetFirewallAddressFilter).RemoteAddress | Measure-Object Yukarıdaki komut toplam kaç adet remote ip adresi olduğunu gördüğümüz komut. (Get-NetFirewallRule -DisplayName “Block RDP Attackers” | Get-NetFirewallAddressFilter).RemoteAddress | Out-file -FilePath c:\komut\remoteipaddress.csv -Encoding utf8 Bu komut ise bu ip adreslerini eğer export etmek istiyorsanız kullanabileceğiniz komut setidir. Umarım faydalı bir makale olmuştur. Bir sonraki makalemde görüşmek üzere. Not: Eğer isterseniz bu konuda aynı işi yapan 3.parti bir programda var, onu da deneyebilirsiniz ancak tabiki lisans ücreti ödenmesi gerekiyor- https://www.servolutions.com/shop/Products.aspx?cat=botfence Powershell için Kaynak