Multi Process appidcertstorecheck.exe and conhost.exe
Bir sistem üzerinde yukarıdaki şekilde çok fazla “appidcertstorecheck.exe” ve buna bağlı “conhost.exe” görüyorsanız (NŞA, exe üzerinde herhangi bir manipülasyon olmadığında) sisteminizde applocker uygulanmış ve ilgili client’ ın internet erişimi ya tamamen kapatılmıştır yada Proxy üzerinden çıkıyordur.
Appidcertstorecheck ne iş yapar?
Bu exe (AppID Certificate Store Verification Task) trigger edildiğinde
HKLM\System\CurrentControlSet\Control\AppID\CertSTore altındaki sertifikaları validate etmeye çalışır, her bir sertifikanın CDP point’ine erişmeye çalıştığında default timeout 15 saniye olduğu için erişim sorunu olduğunda uzun süre çalışır durumda kalabilir.
Bir task bitmeden bir başkasının trigger edilmesi durumunda ise birçok instance oluşabilir.
Certificate Store Verification işlemleri MS sertifikaları olabileceği gibi Third Party sertifika kontrolleri de olabilir.
Öncelikle bu işlemlerin sistemde nasıl bir durumda olduğunu anlayabilmek için Event Viewer üzerinde default olarak kapalı olan aşağıda belirtilen log’ un Enable edilmesi gerekiyor.
Applications and Services Logs => Microsoft => Windows => CAPI2 => Operational üzerinde sağ tıklayıp özelliklerine girdiğimizde görselde belirtildiği şekilde Log Enable edilmeli ve Log size arttırılmalı. Default olarak çok düşük bir değerde açılıyor logların ezilmemesi için disk uygunluğunuza göre yükseltilmeli.
Log açıldıktan sonra artık görmek istediğimiz logların düştüğünü göreceğiz.
Bu konu için bizim dikkat etmemiz gerekecek olan Event ID’ ler 50-51 ve 52-53 olacak.
50-51 Retrieve Object from Cache
52-53 Retrieve Object from Network
Buradaki “Cahce” yapı üzerinde bu işlemin önceden yapıldığını ve bunu External NW çıkmadan Cahce üzerinden gerçekleştirdiğini “Network” ise anlaşılacağı gibi External NW çıkarak yapmaya çalıştığını gösteriyor.
Event’ ların net okunabilmesi için “Details” kısmında “XML View” seçmemiz gerekiyor.
MS check işlemleri için, sistemin aşağıdaki dosyaya ulaşması gerkiyor. (By-Design)
http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcert.sst
Not: Tabii bu durum sadece bu konu için geçerli değil. Bu durum siz aşağıdaki cab dosyalarına erişemediğiniz de karşınıza bulgu olarak da çıkacaktır.
http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab
http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab
İnternete çıkmayan yada bu dosyaları download edemeyen sistemler için aşağıdaki adımlar ile bir offline yapı oluşturabiliyoruz.
Dokümandaki şekilde IIS üzerinden de işlemleri yapabileceğiniz gibi share alanı yaratılıp aşağıdaki ilgili GPO uygulandığında da artık check işlemi için External NW değil Share alana gitmeye çalışacaktır.
Aşağıda örnek bir share işlemi mevcut.
Bu işlemlerin adından Download yetkisi bulunan sistemin TaskScheduler üzerinde aşağıdaki komutun set edildiği bir task yaratılarak belirli aralıklarla bu download işleminin yapılması gerekiyor.
Certutil -syncWithWU \\<server>\<share>
Ancak asıl sorun MS dışındaki doğrulamalarda karşımıza çıkıyor.
Aşağıdaki örnekte olduğu gibi;
Task Manager ekran görüntümüzün üzerinden devam edelim.
Bu process “LOCAL SERVICE” ile çalışmaktadır. Yani IE (regedit) üzerinde tanımlı bir Proxy adresiniz olsa dahi bunu görmeyecektir.
OS katmanında bir Proxy olup olmadığını kontrol edecek var ise Proxy üzerinden bu işlemi yapmaya çalışacak yok ise Firewall üzerinden bu işlemi yapmaya çalışacaktır.
OS Seviyesinde Proxy set edilmemiş bir sistem üzerindeki Log aşağıdaki şekildeki gibi direkt ilgili ip adresine ulaşmaya çalışacaktır
Firewall da bu kural kapalı ise deny alacaktır.
Proxy den çıkmasını istiyorsanız ilgili sistem üzerinde önce;
Aşağıdaki komut ile bir Proxy girilmiş olup olmadığını kontrol edebilirsiniz.
netsh winhttp show proxy
Aşağıdaki komut ile girilmiş olan Proxy silebilirsiniz
netsh winhttp reset proxy
Aşağıdaki komut ile gerekli Proxy set edebilirsiniz.
netsh winhttp set proxy proxy-server=”http://127.0.0.1:8080/“
Ardından testlerinizi gözlemlemek için Task Manager üzerindeki ilgili “appidcertstorecheck.exe” process’ in yavaş yavaş azaldığını takip edebilirsiniz yada CAPI2 Eventlarını kontrol edebilirsiniz.
Burada sistem, öncesinde bir cahce işlemi yaptığı için cache sonuçlarını görebilirsiniz.
Bu neden ile önce cache temizliyoruz ve regedit üzerinde 2 kaydı siliyoruz.
Root update trigger ettirmek için:
HKLM\Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate altındaki EncodedCTL ve LastSyntTime iki kaydı siliyoruz kısa bir süre içerisinde triger ile kayıtlar yeniden oluşacaktır. (Regedit üzerinde işlem yapmadan önce mutlaka Regedit backup alınız)
Aşağıdaki komut ile de bir external cert check işlemi de gerçekleştirebilirsiniz.
Certutil -verify -URLFetch d:\test.cer komutu ile c:\test.cer olarak save ettiğimiz external bir sertifikayı doğrulatabiliriz.
EventViewer Application log’ında 4111 event’inde “Successful auto update of third-party root list with effective date” şeklinde kayıt oluştuğunu görebilirsiniz.
Cahce Temizliği için:
Ancak yine bu cache geçerli kullanıcı altında değil de “LOCAL SERVICE” üzerinde çalıştığı için cmd’ nin bu hesap ile çalışması gerekiyor.
Bunun için psexec.exe kullanmamız gerekiyor.
https://download.sysinternals.com/files/PSTools.zip indirerek içinden psexec.exe alabiliriz.
Ardından;
PsExec.exe /i /u “NT AUTHORITY\LOCALSERVICE” “cmd”
Bize aşağıdaki şekilde “Local Service” ile yeni bir cmd açılacak.
Sonrasında aşağıdaki komutlar ile cache temizliği yapmamız gerekiyor.
Certutil -urlcache * delete
Certutil -urlcache crl delete
Ardından Event üzerinden gözlemleyebiliriz.
“appidcertstorecheck.exe” sistemi çok yorar mı?
Bu biraz sistemin çalışma yapısına ve ne kadar süreli olarak açık kaldığı gibi bir çok etmene bağlı.
Uygulama aşağıda görüldüğü gibi çok az bir cpu ve ram kullanımı gerçekleştiriyor. Ancak arka planda reg ve http request’ leri sürekli tekrarlanıyor.
Burada sistem üzerindeki diğer uygulamalar da önemli. Örneğin yapınızda kullandığınız AV yada farklı bir güvenlik uygulamasının bu kadar çok açılan process için verdiği tepki vb.
Bu işlemlerle uğraşmak istemiyor ve bu check işlemi benim için önemli değil ancak bu process’ in de yığılmasını istemiyorum diyorsanız aşağıdaki GPO set edilerek işlemleri 1 sn. düşürebilirsiniz. Exe açıldıktan bir sn. sonra kapanacak böylece process yığılması yaşamamış olacaksınız.
Ancak bu, check işleminde alınan hataların görünürlüğünü ortadab kaldıracağı için güvenli bir işlem değildir!
Teşekkürler
Eline sağlık, çok başarılı bir makale olmuş.