2

Windows サーバーに関するセキュリティ テストのために、Windows Web アプリケーションへのシンボリック リンクのアップロードを試みたいと考えています。ただし、公式に入手可能な情報に基づくと、Windows ハード リンク (NTFS ジャンクションと同じであると思われます) が、Linux と同じ方法でハード ディスクからコピーできるファイルとして存在するかどうかは不明です。漠然としていますが、NTFSジャンクションは「通常の」ファイルとは異なる他の種類のファイルシステムのアーティファクトであると感じています-これを確認または否定するドキュメントが見つかりません. IE NTFS シンボリック リンクを別のコンピュータに移動できるように、NTFS がシンボリック リンク レコードの直接操作をサポートしているかどうかを知りたいです。

Windows ソフトリンク ファイル (.lnk) がこのように制限されていないことは認識していますが、テストの目的には適していません。

私の目的は、仮想マシンからシンボリックリンクをコピーして、テストしているサーバーにアップロードすることです。

これは可能ですか?(そうではないという印象を受けています。) 私が見た限りでは、Windows 上のすべてのプログラムは、ハードリンクを宛先ファイルとみなします。おそらく特別なエディタを使用してファイルを一時的に破損させることで、これを回避する方法はありますか? シンボリック リンクがファイル システム上に通常のファイルとして存在する場合、シンボリック リンクを変更して、Windows 以外の OS に移動してさらに使用できるようにすることはできますか?

これがサーバー障害のより良い質問かどうか教えてください。これはセキュリティに直接関係するものではなく、セキュリティ演習のサービスにおける平凡な技術的問題であるため、Stack Exchange セキュリティには当てはまらないと思います。

4

2 に答える 2

3

非常に直接的な答えを提供することは困難です。私はバックアップ/修復/イメージング プロジェクトに取り組んでおり、Web サービスを介してディスク イメージ全体をサーバーにコピーしています。

ハードリンク

通常、ハードリンクは互いに区別できないと考えられていますが、リンクされたファイルとその「元の」ファイルには微妙な違いがあります。その違いは、$MFT( winapi 関数で USN 関連の引数を使用して) へのクエリを実行するDeviceIOControlと、ファイルの 1 つだけが返されることです。これは元のファイルと見なされる場合があります。その後、winapi 関数NtQueryInformationFileを呼び出して、ハード リンクを列挙できます。

シンボリックリンクとジャンクションは別物です...

フォルダーから属性を取得することで、フォルダーがジャンクションまたはシンボリックリンクであることを知ることができます。ジャンクションまたはシンボリックリンクの場合、属性に ReparsePoint フラグがあります。ところで - ジャンクションとシンボリック リンクの違いは、ジャンクションが同じボリューム上の別の場所へのリダイレクトであるのに対し、シンボリック リンクはボリューム外の場所へのリダイレクトであることです。リダイレクト先は常に別のフォルダーです。

興味深いのは、シンボリック リンクとジャンクションの両方がフォルダーのように見えて機能することですが、実際にはリダイレクト情報を含むファイルです。それらを開くと、NTFS は通常、リダイレクトを見て、リダイレクト ターゲットを開きます。NTFS はリダイレクト ターゲットでアクセス許可をチェックするため、攻撃としては、これは堅牢な戦略ではない可能性があります。

ジャンクション/シンボリックリンクを開くときに、フラグを追加できますFILE_FLAG_OPEN_REPARSE_POINT。これを行うと、NTFS はリダイレクトを実行しませんが、実際にはリダイレクト情報であるコンテンツを開きます。その情報の形式を知っていると仮定すると、サーバーでジャンクション/シンボリック リンクを再構築することができます。リダイレクトは、存在しない場所、または一時的にしか存在しない場所を指している可能性があることに注意してください。これは、一部のネットワーク リソースが常に利用できるとは限らないためです。

要するに、ジャンクションまたはシンボリックリンクをコピーすることは可能です...ハードリンクをコピーすることは、名目上はファイルをコピーすることを意味します...前述の微妙な点を念頭に置いてください。ターゲット ファイルが存在する限り、ハード リンクを手動で作成することもできます。

ハードリンクに関しては、NTFS セキュリティの状況に興味深い問題が 1 つあります。ユーザーがファイルへのアクセス権を持っていて、ユーザーがアクセス権を持っていないフォルダーにそのファイルへのハードリンクを作成した場合、ユーザーはハードリンクへのパスを使用してそのファイルを開くことができます。これは、リンクと元のファイルの両方がディスク上の同じファイル (およびセキュリティ情報) を指しているためです。いずれかのリンクで変更された権限は、すべてのリンクに影響します。これを知らなければ、うっかりしてファイルシステムに大混乱をもたらす可能性があります:-)

これは少し混乱していることを知っているので、次のように要約しましょう。

NTFS ディレクトリ エントリは、フォルダまたはファイルです。ハードリンクは、すべてが 1 つのファイルを指すディレクトリ エントリです。シンボリック リンクとジャンクションは実際には、ほとんどの実用的な目的でフォルダーのように機能するファイルです(上記のようにリダイレクト情報を取得する方法を理解するまでは)。

于 2016-10-18T21:53:33.620 に答える
1

AFAIR、NTFS(ディレクトリ)ジャンクションは実際にはシンボリックリンクです。juctnion は、リンク ターゲットを含む repars ポイントと呼ばれる特別なファイル属性として実装されます。

一方、ハードリンクは、ターゲット ファイルのベース MFT レコードへの直接参照として実装され、ディレクトリ ツリー内の通常のエントリとして格納されます。実際には、ハードリンクと「元の」ファイルを区別することはできません (すべてのファイルとディレクトリには、ディレクトリ ツリー内のどこかに含まれているため、実際には少なくとも 1 つのハードリンクがあります)。

シンボリック リンク自体をコピーする場合は、それがシンボリック リンクであることを認識し、そのターゲットに関する情報を抽出する必要があります。ファイル操作 (削除と、おそらく名前の変更を除く) は、リンク先にリダイレクトされます。したがって、一般に、宛先領域に正確なコピーを作成することにより、シンボリック リンクをコピーできます。

実際の問題は、コピー操作を実行するために使用しているインターフェイスで、ターゲットにシンボリック リンクを作成できるかどうかです。

于 2016-09-28T00:20:16.710 に答える