Powershell File Hash Compare

Powershell File Hash Compare yazımızda powershell üzerinden dosyaların hash değerlerini alarak karşılaştırma yapacağız. Güvenlik açısından çok kritik verileriniz olabilmektedir. Bu verilerin değişip değişmediğini kontrol etmek gerekmektedir. Bu yazıyı yazmamdaki sebeplerden biri Microsoft Exchange sunucusunda bulunan owa klasöründe olan değişikliklerdir. OWA üzerinde bulunan auth klasörü içerisinde olabilecek herhangi bir zararlı yazılım bütün mail sistemini etkileyebilmektedir. Örnek olarak logon.aspx içerisinde eklenen herhangi bir zararlı ile kullanıcı adı ve şifrelerin ele geçirilmesine neden olabilmektedir.

Bu sebepten dolayı auth klasörünün en başta hash değeri alınır. Daha sonra bu klasör üzerinde belli zaman aralıklarla hash kontrolü yapılmalıdır. Dikkat edilmesi gereken nokta Exchange üzerinde yapılan update’lerde bu dosyalar değişebilmektedir. Bunuda kesinlikle hesaba katılmalıdır.

Bu yazımızın çıkış noktası EXCHANGE owa klasörü fakat sizler için kritik olan dosyaların hash değerlerini hesaplamada kullanabilirsiniz.

Öncellikle ilk olarak hash değeri hesaplanır ve diskinizde herhangi bir yere csv,txt vb. formatlarda tutulmalıdır. Daha sonra her seferinde hash değeri hesaplanarak ilk tutulan hash değeri ile karşılaştırma yapılmalıdır. Owa location bulmak için IIS den owa sitenı explore ederek location bulabilirsiniz. Sona eklenen UTF8 ise türkçe karakterler sorunu yaşarsınız diye ekledim.

$ilkhash=Get-ChildItem -Path "Exchange owa location" -Recurse -File | Get-FileHash |Sort-Object -Property 'Path' |export-csv -Path "CSV location.\ilkhash.csv" -Encoding UTF8

İlk hash’imizi almış olduk. Bu hash bizim kritik hep bu hash değerlerinde olmasını isteriz. Bu kodu çalıştırdık sonra artık diğer kodumuza geçiyoruz . Bu kodu belli zaman dilimlerinde çalıştırarak hash değerimizi kontrol edeceğiz.


function HashControl {
     param(
         [Parameter(Mandatory)]
         [string]$ilkhashcsvlocation,
         [Parameter(Mandatory)]
         [string]$sonhashcsvlocation

     )
     
$ilkhashcsv=import-csv -Path "ilkhashcsvlocation"

$ikincihashalma=Get-ChildItem -Path "Exchange owa location" -Recurse -File | Get-FileHash |Sort-Object -Property 'Path' |export-csv -Path "CSV location\sonhash.csv" -Encoding UTF8


$sonhashcsv=import-csv -Path "$sonhashcsvlocation"

$compare=Compare-Object $ilkhashcsv $sonhashcsv -Property path,hash

if($compare -ne $null){

Write-Host "Durum:","Hash Changed","Path:","$compare.path","Hash:","$compare.hash" -ForegroundColor Red

}
ELSE{

Write-host "Durum:","Hash Same"

}
 }

Bu çalışmayı OWA için gösterdik ama sizin için kritik olan veri grupları için bunu da yapabilirsiniz. Powershell File Hash Compare yazımız ile powershell konusunda kritik veri grupları için file hash kontrol nasıl yapılır göstermiş olduk.Diğer yazılarımızı aşağıdaki kategorilerden takip edebilirsiniz.