cybermachine

Yararlı Powershell Komutları

Herkese selamlar, Bugün temel ve kullanılması oldukça yararlı bazı powershell komutlarından bahsedeceğim. Özellikle son kullanıcıların bu sayede herhangi bir ek program kullanmadan sadece terminal üzerinden Windows işletim sistemlerinde gerek donanım katmanından gerek ise işletim sistemi üzerinden bilgi okuyabileceğini göstermek istiyorum.

image.png

Bunun için Windows arama çubuğuna powershell yazıp yönetici olarak çalıştırıyoruz. Cihazınızın seri numarasını bulmak: Bu işlem aslında çok işinize yaramayacak diye düşünebilirsiniz fakat cihazınızı bir servise verdiğinizde anakartınızın seri numarasının değişip değişmediğini veya cihazınız çalındığında kolluk kuvvetlerine cihazın seri numarasını bildirmek veya bilgisayar üreticinizden cihazınızın çalındığında ağ kartının mac adresi bilgisini talep edip kolluk kuvvetlerine bu bilgileri paylaşmak için bu komutu kullanabilirsiniz.

image.png

Wmic bios get serialnumber Bu komutu CMD üzerinden de çalıştırabilirsiniz ancak aşağıda kırmızıyla çizdiğim kısımda bilgisayarınızın seri numarası çıktığı için bu bilgiyi mümkünse herkesle paylaşmayın. Cihaza takılı olan ram bellek bilgilerine ulaşmak: Çoğu kullanıcı bilgisayarında takılı olan ram belleklerin marka modeli ve ne kadar kapasiteli olduğunu öğrenmek isteyebilir bunun için 3. Parti yazılımlar kullanmak zorunda kalabiliyor. Bu komut ile ram belleklerimizin marka ve modelini görebiliriz. Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer, PartNumber, Speed, SerialNumber, Capacity, ConfiguredClockSpeed, FormFactor, MemoryType, BankLabel, DeviceLocator, SMBIOSMemoryType, TotalWidth, DataWidth, Tag

image.png

Burada görüldüğü üzere cihazımıza takılı olan ram belleklerin kapasitesi, mhz değerleri, model numarası, seri numarası, hangi slotta takılı olduğunu görebiliyorsunuz. Eğer yeni bir bilgisayar aldıysanız ram belleklerinizin orijinal olup olmadığını bilgisayar üreticinizden teyit edebilir veya ram satın alacaksanız cihaz içerisinden çıkan ram belleğin aynısını almak isterseniz bu bilgiler doğrultusunda cihazınız eğer destekliyorsa ram yükseltmeyi ram bellek satın alabilirsiniz. Ek not: Bazen bazı bilgisayarlarda bu bilgiler çıkmayabilir eğer bilgisayarınızda gömülü (anakarta lehimli ram bellek) mevcut ise genelde bu bilgiler Windows tarafından okunamayabiliyor. Bunun için bilgisayar üreticiniz ile iletişime geçebilirsiniz cihazda lehimli bir bellek var mı yok mu bunu öğrenebilirsiniz. Powershell üzerinde Admin yetkisine sahip kullanıcıları görüntüleme: Bu komut aslında bize cihazımıza sızılıp sızılmadığı veya kötü niyetli bir yazılımın ek kullanıcılar oluşturup admin yetkisine erişip erişmediği konusunda ipucu verebilir.

image.png

Get-LocalGroupMember -Group "Administrators" Burada sol tarafta olan kısım bilgisayarınızın adı ve sağ tarafta olan kısım ise kullanıcılardır. Görüldüğü üzere iki tane admin yetkisine sahip sistem kullanıcısı var. Bir tanesi benim hesabım diğeri ise Windows'un normal olarak atadığı Administrator. Eğer bilgisayarınızda birden fazla bilginiz dışında admin yetkisi barındıran kullanıcı varsa ve bunlar ayarlar kısmında görünmüyorsa yüksek ihtimalle cihaza zararlı yazılım bulaşmış veya sızılmış olabilir. Bunun için verilerinizi yedekleyip güvenilir bir anti virüs yazılımıyla (tercihen bitdefender veya kaspersky) ile tam sistem taraması yaptırmak veya cihazın tamamen disklerini silip yeniden işletim sistemi kurmak olacaktır unutmayın bu işlem verileri geri dönülemez olarak silecektir. Bonus - Hangi portların açık olduğunu görmek: Bilgisayarımızda güvenliği arttırmak için bazen gereksiz yere açık olan portları kapatmamız gerekebilir TCP ve UDP portlarını kontrol edip hangilerinin açık olduğunu kontrol edebilirsiniz. TCP için: Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State UDP için: Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort Yukarıda olan komutlar açık portları gösterir ancak bunları açmak ve kapatmak gerekirse aşağıda olan komutları uygulayabilirsiniz bu sayede güvenliğimiz artmış olacaktır ancak unutmadan size önemli bir bilgi daha aktarmak isterim kapattığınız portlara dikkat edin eğer özel bir program kullanıyorsanız ve kullandığı portu kapatırsanız dosya paylaşma, iletişim kurma gibi birçok özelliği bloke etmiş olacaksınız bu nedenle hangi programın hangi portu kullandığını dikkat ederek kapatmanızı öneririm. Kullanmadığınız portları mümkünse açmayın saldırganlar sisteminize erişim sağlayabilir. Kapatmak için: Burada TCP ve UDP protokollerinde örnek amaçlı olarak 54321 portları kullanılmıştır. 80 TCP veya UDP 53 gibi kritik portları bloklamayın lütfen güvenlik duvarınız bu portları kapattığında programlarınızın çoğu düzgün çalışmayacaktır. Portları açarken ve kapatırken dikkatli olun hangi portun ne amaçlı kullanıldığını öğrenerek bu işlemi yapmanız daha mantıklı olacaktır. TCP için: New-NetFirewallRule -DisplayName "Kapalı TCP 54321 Portu" -Direction Inbound -LocalPort 54321 -Protocol TCP -Action Block

image.png

Test çağrımızı yapalım eğer false çıktısı alıyorsak port kapanmış demektir. Görüldüğü üzere portumuz kapanmış. Test-NetConnection -ComputerName localhost -Port 54321 –TCP

image.png

Bunu yapabilirsiniz. Aynı mantığı UDP için de yapabilirsiniz ancak dikkat edilmesi gereken bir husus var şayet portu kullanan bir yazılım varsa veya bir anti-virüs veya firewall yazılımınız varsa bu portların varsayılan olarak kapatılması için veya açılıp kapanmaması için girdi girmiş olması muhtemeldir. Bunun için anti virüs veya firewall yazılımınıza ek tavizler vermeniz gerekebilir, portları kullanan programları kapatmanız gerekebilir. Benim güvenlik yazılımım üst düzey yetkilerle sisteme girdi verdiğinden bu portu ben Defender güvenlik duvarına kural eklesem de açamıyorum gördüğünüz üzere. Eğer açılmış olsaydı sonuç TRUE olarak dönecekti. Tekrar açmak için: Remove-NetFirewallRule -DisplayName "Kapalı TCP 54321 Portu" UDP için: New-NetFirewallRule -DisplayName "Kapalı UDP 54321 Portu" -Direction Inbound -LocalPort 54321 -Protocol UDP -Action Block Test çağrısı: Test-NetConnection -ComputerName localhost -Port 54321 –UDP Ardından kuralı kaldırmak için: Remove-NetFirewallRule -DisplayName "Kapalı UDP 54321 Portu" Eğer porta izin vermek istiyorsanız: New-NetFirewallRule -DisplayName "Kapalı UDP 54321 Portu" -Direction Inbound -LocalPort 54321 -Protocol UDP -Action Allow New-NetFirewallRule -DisplayName "Kapalı TCP 54321 Portu" -Direction Inbound -LocalPort 54321 -Protocol TCP -Action Allow Görsel olarak görmek isterseniz de denetim masasından Windows Defender güvenlik duvarı kısmından görebilirsiniz kuralları:

image.png

Evet bu yazımda bazı powershell komutlarına değindim daha sonra olan yazılarımda görüşmek üzere.