WIN32 İle Windows Etkileşimleri! (RCE #3)

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won

oqk18ir.png


lbn20fm.png
2q250vr.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konu nasıl kodlandığını anlatmakta olduğum "Remote Code Service" yazılımımızın 3. konusu.
Bu konuda Ruby dilinde "WIN32" kütüphanesini kullanarak Windows ile etkileşime geçmeyi öğreneceğiz. Servisimize ekleme yapacağımız özellikler için bu konu lazım olacak.

Serinin Diğer Yazıları:

Remote Code Execution Servisi Kodlamak! #1
Antivirüslerle Alay Etmek! (RCE #2) (%100 FUD)



WIN32 Gemleri

win32 kütüphanesi, Ruby programcılarına Windows işletim sistemleri üzerinde çeşitli görevleri gerçekleştirmeleri için araçlar sağlayan bir dizi Ruby gem'ini içerir. Bu gem'ler, düşük seviyeli Windows API'lerine erişim, Windows hizmetleri yönetimi, COM nesneleri üzerinde çalışma gibi çeşitli konularda yardımcı olur. win32 kütüphanesi, aşağıdaki alt başlıklardan oluşur:

win32-api Gem'i:
  • Ruby'nin Windows API'sine düşük seviyeli erişim sağlar.
  • Windows API fonksiyonlarına Ruby üzerinden erişmeyi mümkün kılar.
  • Düşük seviyeli sistem çağrıları yapmak için kullanılır.
win32ole Gem'i:
  • COM (Component Object Model) nesneleri üzerinde çalışmayı sağlar.
  • Microsoft Office uygulamaları gibi COM nesnelerini kullanmak için kullanışlıdır.
  • OLE (Object Linking and Embedding) nesneleri ile etkileşimde bulunmayı sağlar.
win32-service Gem'i:
  • Windows hizmetleri ile etkileşimde bulunmayı sağlar.
  • Windows hizmetlerini kontrol etmek ve yönetmek için kullanılır.
  • Hizmetleri başlatma, durdurma, durumunu kontrol etme gibi işlemleri gerçekleştirmek için kullanılır.
win32-process Gem'i:
  • Windows işlemleri ile ilgili işlemleri yönetir.
  • İşlemleri başlatma, sonlandırma ve diğer işlemleri gerçekleştirmek için kullanılır.
  • İşlemler arası iletişimi sağlar.
Bu gem'ler, Ruby programcılarına Windows platformunda çeşitli görevleri yerine getirme imkanı sağlar. Her bir gem, belirli bir konuda yetenekleriyle öne çıkar ve Windows üzerinde uygulama geliştirmeyi kolaylaştırır.


WIN32OLE

Windows Üzerinde Çalışan Programları Listelemek:

Ruby:
require 'win32ole'

# WMI (Windows Management Instrumentation) sınıfını kullanarak çalışan uygulamaları listele
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process")

puts "Çalışan Uygulamalar:"
processes.each do |process|
  puts "PID: #{process.ProcessId}, Adı: #{process.Name}"
end

Çıktı:

ep3hd6v.png


Windows Script Host İle Metin Mesajı Yollamak:

Ruby:
require 'win32ole'
# Windows Script Host'u başlat

wsh = WIN32OLE.new('WScript.Shell')
# Metin mesajı göster
wsh.Popup('Merhaba, WIN32OLE!', 0, 'Bilgi', 1)

Görmek İstemeyeceğiniz Çıktı:

t2ei7xc.png


Masaüstü Dosyalarını Listelemek:



Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Masaüstündeki öğeleri listeleyelim
desktop = explorer.NameSpace('C:\Users\Bunjo\Desktop')
desktop.Items.each do |item|
  puts item.Name
end

Internet Explorer Çalıştırmak:

Ruby:
require 'win32ole'

# Internet Explorer'ı başlat
ie = WIN32OLE.new('InternetExplorer.Application')
ie.navigate('http://www.example.com')
ie.visible = true

pfljbgw.png


Windows Explorer ile Dosya Açmak:

Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Belirtilen dosyayı Windows Explorer ile aç
dosya_yolu = 'dosya yolu'
explorer.ShellExecute(dosya_yolu, '', '', 'open', 1)

İşlem Başlatıp PID Numarası Öğrenmek:

Ruby:
require 'win32ole'

ie = WIN32OLE.new("InternetExplorer.Application")
ie.navigate("google.com")

wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process Where Name='explorer.exe'")

processes.each do |process|
  puts "Process ID: #{process.ProcessId}"
  puts "Creation Date: #{process.CreationDate}"
end

Çıktı:

ppi62mz.png


Klavyeden Yazdırma İşlemi:

Ruby:
require 'win32ole'

shell = WIN32OLE.new('WScript.Shell')

shell.SendKeys('bunjo')



Programımıza ekleyeceğimiz özelliklerden bazılarını burada paylaştım, ben "win32ole" kütüphanesini seçtim çünkü default bir kütüphane olarak geliyor. Yeni konularda bir menü oluşturarak RCE servisimize ekleyeceğiz.

Okuyan herkese teşekkür ederim.


 

ACE Veen

Uzman üye
4 Şub 2023
1,111
563
Belirsiz

oqk18ir.png


lbn20fm.png
2q250vr.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konu nasıl kodlandığını anlatmakta olduğum "Remote Code Service" yazılımımızın 3. konusu.
Bu konuda Ruby dilinde "WIN32" kütüphanesini kullanarak Windows ile etkileşime geçmeyi öğreneceğiz. Servisimize ekleme yapacağımız özellikler için bu konu lazım olacak.

Serinin Diğer Yazıları:

Remote Code Execution Servisi Kodlamak! #1
Antivirüslerle Alay Etmek! (RCE #2) (%100 FUD)



WIN32 Gemleri

win32 kütüphanesi, Ruby programcılarına Windows işletim sistemleri üzerinde çeşitli görevleri gerçekleştirmeleri için araçlar sağlayan bir dizi Ruby gem'ini içerir. Bu gem'ler, düşük seviyeli Windows API'lerine erişim, Windows hizmetleri yönetimi, COM nesneleri üzerinde çalışma gibi çeşitli konularda yardımcı olur. win32 kütüphanesi, aşağıdaki alt başlıklardan oluşur:

win32-api Gem'i:
  • Ruby'nin Windows API'sine düşük seviyeli erişim sağlar.
  • Windows API fonksiyonlarına Ruby üzerinden erişmeyi mümkün kılar.
  • Düşük seviyeli sistem çağrıları yapmak için kullanılır.
win32ole Gem'i:
  • COM (Component Object Model) nesneleri üzerinde çalışmayı sağlar.
  • Microsoft Office uygulamaları gibi COM nesnelerini kullanmak için kullanışlıdır.
  • OLE (Object Linking and Embedding) nesneleri ile etkileşimde bulunmayı sağlar.
win32-service Gem'i:
  • Windows hizmetleri ile etkileşimde bulunmayı sağlar.
  • Windows hizmetlerini kontrol etmek ve yönetmek için kullanılır.
  • Hizmetleri başlatma, durdurma, durumunu kontrol etme gibi işlemleri gerçekleştirmek için kullanılır.
win32-process Gem'i:
  • Windows işlemleri ile ilgili işlemleri yönetir.
  • İşlemleri başlatma, sonlandırma ve diğer işlemleri gerçekleştirmek için kullanılır.
  • İşlemler arası iletişimi sağlar.
Bu gem'ler, Ruby programcılarına Windows platformunda çeşitli görevleri yerine getirme imkanı sağlar. Her bir gem, belirli bir konuda yetenekleriyle öne çıkar ve Windows üzerinde uygulama geliştirmeyi kolaylaştırır.


WIN32OLE

Windows Üzerinde Çalışan Programları Listelemek:

Ruby:
require 'win32ole'

# WMI (Windows Management Instrumentation) sınıfını kullanarak çalışan uygulamaları listele
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process")

puts "Çalışan Uygulamalar:"
processes.each do |process|
  puts "PID: #{process.ProcessId}, Adı: #{process.Name}"
end

Çıktı:

ep3hd6v.png


Windows Script Host İle Metin Mesajı Yollamak:

Ruby:
require 'win32ole'
# Windows Script Host'u başlat

wsh = WIN32OLE.new('WScript.Shell')
# Metin mesajı göster
wsh.Popup('Merhaba, WIN32OLE!', 0, 'Bilgi', 1)

Görmek İstemeyeceğiniz Çıktı:

t2ei7xc.png


Masaüstü Dosyalarını Listelemek:



Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Masaüstündeki öğeleri listeleyelim
desktop = explorer.NameSpace('C:\Users\Bunjo\Desktop')
desktop.Items.each do |item|
  puts item.Name
end

Internet Explorer Çalıştırmak:

Ruby:
require 'win32ole'

# Internet Explorer'ı başlat
ie = WIN32OLE.new('InternetExplorer.Application')
ie.navigate('http://www.example.com')
ie.visible = true

pfljbgw.png


Windows Explorer ile Dosya Açmak:

Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Belirtilen dosyayı Windows Explorer ile aç
dosya_yolu = 'dosya yolu'
explorer.ShellExecute(dosya_yolu, '', '', 'open', 1)

İşlem Başlatıp PID Numarası Öğrenmek:

Ruby:
require 'win32ole'

ie = WIN32OLE.new("InternetExplorer.Application")
ie.navigate("google.com")

wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process Where Name='explorer.exe'")

processes.each do |process|
  puts "Process ID: #{process.ProcessId}"
  puts "Creation Date: #{process.CreationDate}"
end

Çıktı:

ppi62mz.png


Klavyeden Yazdırma İşlemi:

Ruby:
require 'win32ole'

shell = WIN32OLE.new('WScript.Shell')

shell.SendKeys('bunjo')



Programımıza ekleyeceğimiz özelliklerden bazılarını burada paylaştım, ben "win32ole" kütüphanesini seçtim çünkü default bir kütüphane olarak geliyor. Yeni konularda bir menü oluşturarak RCE servisimize ekleyeceğiz.

Okuyan herkese teşekkür ederim.


İşe yarar
 

QuatrexDefacer

Anka Team Junior
15 Eki 2022
606
382
Baku

oqk18ir.png


lbn20fm.png
2q250vr.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konu nasıl kodlandığını anlatmakta olduğum "Remote Code Service" yazılımımızın 3. konusu.
Bu konuda Ruby dilinde "WIN32" kütüphanesini kullanarak Windows ile etkileşime geçmeyi öğreneceğiz. Servisimize ekleme yapacağımız özellikler için bu konu lazım olacak.

Serinin Diğer Yazıları:

Remote Code Execution Servisi Kodlamak! #1
Antivirüslerle Alay Etmek! (RCE #2) (%100 FUD)



WIN32 Gemleri

win32 kütüphanesi, Ruby programcılarına Windows işletim sistemleri üzerinde çeşitli görevleri gerçekleştirmeleri için araçlar sağlayan bir dizi Ruby gem'ini içerir. Bu gem'ler, düşük seviyeli Windows API'lerine erişim, Windows hizmetleri yönetimi, COM nesneleri üzerinde çalışma gibi çeşitli konularda yardımcı olur. win32 kütüphanesi, aşağıdaki alt başlıklardan oluşur:

win32-api Gem'i:
  • Ruby'nin Windows API'sine düşük seviyeli erişim sağlar.
  • Windows API fonksiyonlarına Ruby üzerinden erişmeyi mümkün kılar.
  • Düşük seviyeli sistem çağrıları yapmak için kullanılır.
win32ole Gem'i:
  • COM (Component Object Model) nesneleri üzerinde çalışmayı sağlar.
  • Microsoft Office uygulamaları gibi COM nesnelerini kullanmak için kullanışlıdır.
  • OLE (Object Linking and Embedding) nesneleri ile etkileşimde bulunmayı sağlar.
win32-service Gem'i:
  • Windows hizmetleri ile etkileşimde bulunmayı sağlar.
  • Windows hizmetlerini kontrol etmek ve yönetmek için kullanılır.
  • Hizmetleri başlatma, durdurma, durumunu kontrol etme gibi işlemleri gerçekleştirmek için kullanılır.
win32-process Gem'i:
  • Windows işlemleri ile ilgili işlemleri yönetir.
  • İşlemleri başlatma, sonlandırma ve diğer işlemleri gerçekleştirmek için kullanılır.
  • İşlemler arası iletişimi sağlar.
Bu gem'ler, Ruby programcılarına Windows platformunda çeşitli görevleri yerine getirme imkanı sağlar. Her bir gem, belirli bir konuda yetenekleriyle öne çıkar ve Windows üzerinde uygulama geliştirmeyi kolaylaştırır.


WIN32OLE

Windows Üzerinde Çalışan Programları Listelemek:

Ruby:
require 'win32ole'

# WMI (Windows Management Instrumentation) sınıfını kullanarak çalışan uygulamaları listele
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process")

puts "Çalışan Uygulamalar:"
processes.each do |process|
  puts "PID: #{process.ProcessId}, Adı: #{process.Name}"
end

Çıktı:

ep3hd6v.png


Windows Script Host İle Metin Mesajı Yollamak:

Ruby:
require 'win32ole'
# Windows Script Host'u başlat

wsh = WIN32OLE.new('WScript.Shell')
# Metin mesajı göster
wsh.Popup('Merhaba, WIN32OLE!', 0, 'Bilgi', 1)

Görmek İstemeyeceğiniz Çıktı:

t2ei7xc.png


Masaüstü Dosyalarını Listelemek:



Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Masaüstündeki öğeleri listeleyelim
desktop = explorer.NameSpace('C:\Users\Bunjo\Desktop')
desktop.Items.each do |item|
  puts item.Name
end

Internet Explorer Çalıştırmak:

Ruby:
require 'win32ole'

# Internet Explorer'ı başlat
ie = WIN32OLE.new('InternetExplorer.Application')
ie.navigate('http://www.example.com')
ie.visible = true

pfljbgw.png


Windows Explorer ile Dosya Açmak:

Ruby:
require 'win32ole'

# Windows Explorer'ı başlat
explorer = WIN32OLE.new('Shell.Application')

# Belirtilen dosyayı Windows Explorer ile aç
dosya_yolu = 'dosya yolu'
explorer.ShellExecute(dosya_yolu, '', '', 'open', 1)

İşlem Başlatıp PID Numarası Öğrenmek:

Ruby:
require 'win32ole'

ie = WIN32OLE.new("InternetExplorer.Application")
ie.navigate("google.com")

wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("Select * from Win32_Process Where Name='explorer.exe'")

processes.each do |process|
  puts "Process ID: #{process.ProcessId}"
  puts "Creation Date: #{process.CreationDate}"
end

Çıktı:

ppi62mz.png


Klavyeden Yazdırma İşlemi:

Ruby:
require 'win32ole'

shell = WIN32OLE.new('WScript.Shell')

shell.SendKeys('bunjo')



Programımıza ekleyeceğimiz özelliklerden bazılarını burada paylaştım, ben "win32ole" kütüphanesini seçtim çünkü default bir kütüphane olarak geliyor. Yeni konularda bir menü oluşturarak RCE servisimize ekleyeceğiz.

Okuyan herkese teşekkür ederim.


Eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.