Exchange OWA ve ActiveSync Erişim IP Adreslerini Nasıl Tespit Ederim? Exchange Server’ a OWA ve Active Sync Üzerinden Kimler Bağlanmış?

Exchange Server dış dünyaya açık bir sistem olması nedeni ile ne yazık ki pek çok saldırıya açıktır. Tabi ki doğru yapılandırma ve ürünler ile son derece güvenli bir şekilde kullanım imkanı sunar. Ancak ne yazık ki her şirketin WAF, NLB, SIEM, DLP, Proxy, 2FA ve benzeri ürünleri alması kullanması mümkün olmuyor. Durum böyle olunca da temel anlamda Exchange sunucularına kimlerin ne zaman hangi ip adresinden bağlandığı bilgisini bulmak bize düşebiliyor.

Konumuza geçmeden önce tabiki sizlere öncelikle Exchange Server için bağlantı loglarının nasıl tutulduğunu anlatmak istiyorum.

Yukarıda temel olarak Exchange Server 2016 için (2019 dahil aynı mimariyi kullanıyor) temel bir istemci sunucu bağlantı mimarisini görüyoruz. Tabi ki her şirketin exchange server deployment senaryoları farklı olacağı için örneğin sizin şirketinizde Edge Transport Role yerine bir SMTP GW veya her ikiside olabilir.

Bizi ilgilendiren detay ise yukarıdaki gibidir. Yani bir Exchange Server’ a yapılan temel bağlantıları kontrol ettiğimiz zaman Mobile aygıtlar, web client ve outlook’ u görebiliyoruz. Bunlar web temelli istemci bağlantı yöntemleridir. Diğer protokolleri ise yine POP3, IMAP4 ve SMTP yi görebiliyoruz. Özetle bir istemci bir exchange sunucusuna bağlanırken kullandığı protokol çok önemlidir. Misal bir SMTP bağlantı bilgisini arıyorsanız bunu SMTP loglarında, bir Outlook bağlantı bilgisini arıyorsanız bunu IIS loglarında arayacağınızı yukarıdaki mimariden öğrenebilirsiniz.

Genelde SMTP loglarını okumak kolaydır. Powershell ile message tracking veya bu gün hemen hemen her kurumda olan SMTP GW ürünlerinin birer web ara yüzü olması nedeni ile mail hangi saatte kimden gelmiş, kim göndermiş görebiliyoruz. Ancak bir posta kutusuna active sync, owa veya outlook ile kim ne zaman nereden bağlanmış sorusu tamamen IIS konusuna giriyor.

Not: Exchange Server için Admin Audit Log, Mailbox Audit log gibi diğer kavramlar farklıdır. Bunlar için yine Çözümpark üzerindeki makaleleri okumanızı tavsiye ediyorum.

IIS konsolunu açtığımız zaman karşımıza aşağıdaki gibi bir ekran gelir;

Burada Exchange Server için logların saklandığı dizin, boyut, logların detaylarına karar verebiliriz. Bunları değiştirmek için ilgili web sitesinin üzerine tıkladıktan sonra (burada bizim için önemli olan default web sitesidir) Logging bölümüne tıklamak olmalı.

Bu bölümü açtıktan sonra karşımıza aşağıdaki gibi bir ekran gelecektir.

Buradan logların hangi formatta tutulacağını, hangi dizine kayıt edileceğini ve logların günlük mü yoksa belirli bir boyut ile mi bölüneceğine karar verebilirsiniz. Select Fields bölümüne tıklarsanız Exchange sunucusuna bağlanan bir istemci için hangi bilgileri loglanacağına karar verebilirsiniz.

Varsayılan olarak bu alan gayet yeterlidir. İsterseniz ek alanları seçebilir ancak bunların seçiminin log dosyası için bir parça da olsa büyümek demek olduğunu unutmayın lütfen.

Burada iki tane gerçek hayat senaryosu paylaşmak istiyorum. Öncelikle buradaki logların bir SIEM ürünü ile düzenli alınması ve temizlenmesi önerilmektedir. IIS ile bu logların benim birazdan anlatacağım yöntem ile birleştirilip sorgulanması zahmetli bir iştir.

İkinci konu ise pek çok kurumda Exchange Server önünde NLB olur. Bu nedenle burada istemci ip adreslerinin sürekli NLB ip adresi olarak görüşmemesi için X-Forward-For yardımı ile NLB veya WAF cihazına istek yapan orjinal ip adresinin arka bölüme aktarılması gereklidir. Bunun için buraya ek bir alan eklemeniz gerekebilir.

Bu alanlar aslında son derece anlaşılır ancak bu alanların açıklamaları için aşağıdaki linki ziyaret edebilirsiniz.

https://learn.microsoft.com/en-us/windows/win32/http/w3c-logging

Peki bu kadar temel bilgi yeterli. Şimdi gelelim bizim sunucumuza kimlerin nereden hangi ip ile bağlandığını bulmaya. Tabi unutmayın eğer bu bir saldırı ve şirket dışından geliyor ise tüm şartlar uygun olsa ve bir ip adresi bulsanız da muhtemel bu bir proxy arkasında olacağı için bir şey ifade etmeyecektir.

Bazı kritik durumlarda günlük olarak ihtiyaç duymadığınız bu bilgiye acil olarak ihtiyaç duyabilirsiniz. Böyle anlarsa bu makale size çok yardımcı olacaktır. Amacım OWA yani IIS üzerinden sunulan web tabalı e-posta hizmeti için kimlerin erişim sağladığını tespit etmektedir.

Varsayılan olarak Exchange Server OWA için IIS kullanır ve yine IIS varsayılan olarak hizmet verdiği web siteleri için log tutar. Bu log dizini siz değiştirmediyseniz eğer aşağıdaki gibidir;

C:\inetpub\logs\LogFiles

Burada her bir web sitesi için ayrı klasörler görebilirsiniz. Hangi web sitesinin log klasörü hangisi olduğunu IIS manager üzerinden kontrol edebilirsiniz

Site ID ne ise klasörün de sonunda benzer bir numara göreceksiniz

İlk olarak amacımız burada incelemek istediğiniz logları c:\log gibi kolay bir dizine alalım

Daha sonra aşağıdaki link üzerinden ücretsiz ola log parser yazılımını indirelim ve kuralım

https://www.microsoft.com/en-us/download/details.aspx?id=24659

Kurulum sonrasındaki ilk komutumuz log dizinindeki logları birleştirmektir. Bunun için c:\log klasörü içerisine bir klasör daha açalım ve ismi “mergedlog” olsun

Daha sonra aşağıdaki komut ile birleştirme işlemini tamamlayalım

logparser.exe -i:iisw3c “select * into c:\log\mergedlog\merge.log from c:\log\*” -o:csv

Not: komutu log parser exe olan dizinde çalıştırın, ek olarak eğer hata alırsanız lütfen bu komutu not defterine yapıştırıp tırnak işaretlerini silip tekrar ekleyin

Dosyanın oluştuğunu kontrol edelim

1.5GB lık tek bir dosya oldu.

Şimdi ise artık sorgu zamanı, ister OWA, iste Active Sync veya farklı komut setleri ile sonuç alabiliriz

İlk olarak OWA ile başlayalım

LogParser -i:csv “SELECT cs-username, date, time, c-ip, cs-uri-stem, cs(User-Agent) FROM C:\log\mergedlog\merge.log TO C:\log\Output.csv WHERE cs-method LIKE ‘%post%’ and cs-uri-stem LIKE ‘%owa%'”

Çıktıyı kontrol edelim

Active Sync bağlantıları için komutumuz aşağıdaki gibidir;

LogParser -i:csv “SELECT cs-username, date, time, c-ip, cs-uri-stem, cs(User-Agent) FROM C:\log\mergedlog\merge.log TO C:\log\Output.csv WHERE cs-method LIKE ‘%post%’ and cs-uri-stem LIKE ‘%Microsoft-Server-ActiveSync%'”

Benzer şekilde bir dosya oluştuğunu görüyoruz. Dosya ismi aynı olduğu için eski dosyanın üzerine yazar, eğer siz ikisini ayrı ayrı tutmak istiyorsanız komutun TO bölümünden sonrasındaki dosya ismini activesync olarak değiştirebilirsiniz

Excel dosyasını açınca ise sonuç aşağıdaki gibidir;

Biraz küçükte olsa aslında her şey net, kimin hangi telefondan ne zaman hangi ip zerinden bağlandığını görebiliyoruz.

Aslında makalemde anlatmak istediklerim bu kadar, ancak son olarak bundan daha fazlası için sizlerin de komutları istediği gibi geliştirebileceğini hatırlatmak isterim. Örneğin sadece Mac client bağlantılarını mı görmek istiyorsunuz örnek aşağıdaki gibidir;

LogParser -i:csv “SELECT cs-username, date, time, c-ip, cs-uri-stem, cs(User-Agent) FROM C:\log\mergedlog\merge.log TO C:\log\Output.csv WHERE cs-method LIKE ‘%post%’ and cs(user-agent) LIKE ‘%Macoutlook%'”

Ya da bir kullanıcıyı mı arıyorsunuz?

LogParser “SELECT date, time, c-ip, cs-uri-stem, cs-username, cs(User-Agent), cs-uri-query FROM C:\log\mergedlog\merge.log TO c:\temp\Output.csv WHERE cs-username LIKE ‘%huzuner%'”

Gerisi size kalmış, kolay gelsin.

Kaynak

https://myriadofthings.com/outlook-web-access-owa-and-activesync-reporting-using-iis-logs/

https://www.msexchange.org/articles-tutorials/exchange-server-2003/tools/Using-Logparser-Utility-Analyze-ExchangeIIS-Logs.html

https://forums.iis.net/t/1145506.aspx