none
ファイルシステムミニフィルタードライバーにおける「\;RdpDr;:192.168.X.X」のパス名について RRS feed

  • 質問

  • お世話になります。

    ファイルシステムミニフィルタードライバーを使用して、共有ファイルサーバへのアクセスを遮断したり、制御を行いたいと思っています。
    MJ_CREATEの操作前コールバック関数を使用して、ファイルオブジェクトパス名を取得して作成していますが、
    取得したパス名に「\;RdpDr;:1\192.168.X.X」のようなパス名の場合、このアクセスを遮断することができず困っています。

    アクセスの遮断は取得したパス名を確認し、IPアドレスが含まれている場合は、以下のように操作前コールバック関数から抜けるようにしてブロックしています。

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;

    Data->IoStatus.Information = 0;
    return FLT_PREOPE_COMPLETE;

    「\;RdpDr;:1」が含まれていない「\192.168.X.X\text.txt」のパス名の場合は、上記のコードで問題なくアクセスを遮断できています。
    「\;RdpDr;:1」が含まれている場合、どのようにすればブロックすればよろしいのでしょうか。

    MJ_CREATEだけでは、ブロックすることはできないのでしょうか。

    以上、ご教示をお願いいたします。

    2022年5月18日 1:16

すべての返信

  • その2つのファイル パスで Pre-Create ルーチンが呼び出された際のコールスタックを提示してもらえますか?
    2022年5月18日 23:23
  • ご返信いただき、ありがとうございます。 コールスタックですが、使用している操作前コールバックルーチンのコードで、よろしいでしょうか? よろしくお願い致します。
    2022年5月19日 1:11
  • > コールスタックですが、
    > 使用している操作前コールバックルーチンのコードで、
    > よろしいでしょうか?

    違います、コール スタックです。
    Pre-Create ルーチンが呼び出された直後の、コール スタックを確認したいのです。
    この問題を解決するためには、それぞれのコールがどのようなシーケンスでどのように呼び出されているのかを、きちんと把握する必要があります。
    そのためには、コールスタックの状態等を、きちんと確認することが重要です。

    例えば FileInfo フィルタ ドライバを例にすると。。。。
    FileInfo.sys の Pre-Create コールバックルーチンは fileinfo!FIPreCreateCallback になりますので、デバッガ上からここにブレークポイントをセットしておきます。
    fileinfo!FIPreCreateCallback ルーチンが呼び出されると、下記のようなコールスタックを確認することができます。
    1: kd> !thread
    THREAD ffff9a0dc6ebd0c0  Cid 085c.1f68  Teb: 0000008ef2f81000 Win32Thread: 0000000000000000 RUNNING on processor 1
    IRP List:
        ffff9a0dc6b419b0: (0006,0478) Flags: 00000884  Mdl: 00000000
    Not impersonating
    DeviceMap                 ffffcf0b36891aa0
    Owning Process            ffff9a0dc6dce0c0       Image:         msedge.exe
    Attached Process          N/A            Image:         N/A
    Wait Start TickCount      13372          Ticks: 0
    Context Switch Count      19             IdealProcessor: 1             
    UserTime                  00:00:00.000
    KernelTime                00:00:00.000
    Win32 Start Address 0x00007ffe90b7c000
    Stack Init ffff808cea806c90 Current ffff808cea805c60
    Base ffff808cea807000 Limit ffff808cea801000 Call 0000000000000000
    Priority 5 BasePriority 4 PriorityDecrement 0 IoPriority 0 PagePriority 1
    Child-SP          RetAddr               : Args to Child                                                           : Call Site
    ffff808c`ea806238 fffff801`71f3666c     : 00000000`00000000 ffff9a0d`00000000 ffff9a0d`00000000 ffff9a0d`bfbb2240 : fileinfo!FIPreCreateCallback
    ffff808c`ea806240 fffff801`71f3611a     : ffff808c`ea806300 fffff801`71f37e00 00000000`00000000 fffff801`00000000 : FLTMGR!FltpPerformPreCallbacksWorker+0x36c
    ffff808c`ea806360 fffff801`71f6c0c0     : ffff808c`ea807000 ffff808c`ea801000 ffff9a0d`bfa9f670 00000000`00000000 : FLTMGR!FltpPassThroughInternal+0xca
    ffff808c`ea8063b0 fffff801`75e4e565     : 00000000`00000000 ffff9a0d`bfa95670 00000000`00000000 00000000`00000000 : FLTMGR!FltpCreate+0x310
    ffff808c`ea806460 fffff801`75e9c224     : 00000000`00000003 ffff9a0d`c6b419b0 ffff9a0d`6d4e6f49 fffff801`75e9be53 : nt!IofCallDriver+0x55
    ffff808c`ea8064a0 fffff801`762255bd     : ffff808c`ea806760 ffff9a0d`bfa95670 ffff9a0d`c74028b8 00000000`00000000 : nt!IoCallDriverWithTracing+0x34
    ffff808c`ea8064f0 fffff801`7621319e     : ffff9a0d`bfa95670 00000000`00000056 ffff9a0d`c5ce8aa0 ffff9a0d`c5ce8a01 : nt!IopParseDevice+0x117d
    ffff808c`ea806660 fffff801`762354ea     : ffff9a0d`c5ce8a00 ffff808c`ea8068c8 00007ffe`00000040 ffff9a0d`bf0fabc0 : nt!ObpLookupObjectName+0x3fe
    ffff808c`ea806830 fffff801`7630043f     : 00000000`00000000 0000008e`f6ffea78 00000000`00000000 00000000`00000001 : nt!ObOpenObjectByNameEx+0x1fa
    ffff808c`ea806960 fffff801`76300019     : 0000008e`f6ffea38 00000000`00000001 0000008e`f6ffea78 0000008e`f6ffea40 : nt!IopCreateFile+0x40f
    ffff808c`ea806a00 fffff801`760096b5     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!NtCreateFile+0x79
    ffff808c`ea806a90 00007ffe`c992d7e4     : 00007ffe`c763a070 00000000`00000000 00000000`00000001 000019d0`002f98a8 : nt!KiSystemServiceCopyEnd+0x25 (TrapFrame @ ffff808c`ea806b00)
    0000008e`f6ffe9b8 00007ffe`c763a070     : 00000000`00000000 00000000`00000001 000019d0`002f98a8 00000000`00000000 : ntdll!NtCreateFile+0x14
    0000008e`f6ffe9c0 00000000`00000000     : 00000000`00000001 000019d0`002f98a8 00000000`00000000 00000000`00000000 : 0x00007ffe`c763a070
    

    上記コール スタックからこの Create Request は、Fast I/O 経由ではなく、通常の Create IRP 経由で fileinfo!FIPreCreateCallback が呼び出されたことが分かります。
    さらに上記タイミングでデバッガにブレークインさせた場合、fileinfo!FIPreCreateCallback ルーチンの各パラメータは、rcx, rdx, r8 レジスタに格納されているので、それを確認すればどのように呼び出されたのかも確認することができます。

    1: kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx 
       +0x000 Flags            : 9
       +0x008 Thread           : 0xffff9a0d`c6ebd0c0 _KTHREAD
       +0x010 Iopb             : 0xffff9a0d`c6b0f960 _FLT_IO_PARAMETER_BLOCK
       +0x018 IoStatus         : _IO_STATUS_BLOCK
       +0x028 TagData          : (null) 
       +0x030 QueueLinks       : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
       +0x040 QueueContext     : [2] (null) 
       +0x030 FilterContext    : [4] (null) 
       +0x050 RequestorMode    : 1 ''
    
    1: kd> dt fltmgr!_FLT_IO_PARAMETER_BLOCK 0xffff9a0d`c6b0f960
       +0x000 IrpFlags         : 0x884
       +0x004 MajorFunction    : 0 ''
       +0x005 MinorFunction    : 0 ''
       +0x006 OperationFlags   : 0 ''
       +0x007 Reserved         : 0 ''
       +0x008 TargetFileObject : 0xffff9a0d`c7402820 _FILE_OBJECT
       +0x010 TargetInstance   : 0xffff9a0d`bfbb2010 _FLT_INSTANCE
       +0x018 Parameters       : _FLT_PARAMETERS
    
    1: kd> dt fltmgr!_FILE_OBJECT 0xffff9a0d`c7402820
       +0x000 Type             : 0n5
       +0x002 Size             : 0n216
       +0x008 DeviceObject     : 0xffff9a0d`bfa95670 _DEVICE_OBJECT
       +0x010 Vpb              : (null) 
       +0x018 FsContext        : (null) 
       +0x020 FsContext2       : (null) 
       +0x028 SectionObjectPointer : (null) 
       +0x030 PrivateCacheMap  : (null) 
       +0x038 FinalStatus      : 0n0
       +0x040 RelatedFileObject : (null) 
       +0x048 LockOperation    : 0 ''
       +0x049 DeletePending    : 0 ''
       +0x04a ReadAccess       : 0 ''
       +0x04b WriteAccess      : 0 ''
       +0x04c DeleteAccess     : 0 ''
       +0x04d SharedRead       : 0 ''
       +0x04e SharedWrite      : 0 ''
       +0x04f SharedDelete     : 0 ''
       +0x050 Flags            : 2
       +0x058 FileName         : _UNICODE_STRING "\Users\お馬鹿\AppData\Local\Microsoft\Edge\User Data\Default\Network\f695a92a-5973-4cce-b223-f4c573175f5e.tmp"
       +0x068 CurrentByteOffset : _LARGE_INTEGER 0x0
       +0x070 Waiters          : 0
       +0x074 Busy             : 0
       +0x078 LastLock         : (null) 
       +0x080 Lock             : _KEVENT
       +0x098 Event            : _KEVENT
       +0x0b0 CompletionContext : (null) 
       +0x0b8 IrpListLock      : 0
       +0x0c0 IrpList          : _LIST_ENTRY [ 0xffff9a0d`c74028e0 - 0xffff9a0d`c74028e0 ]
       +0x0d0 FileObjectExtension : (null) 
    
    1: kd> !devstack 0xffff9a0dbfa95670
      !DevObj           !DrvObj            !DevExt           ObjectName
      ffff9a0dbfa9b040  \Driver\volsnap    ffff9a0dbfa9b190  
      ffff9a0dbfa10be0  \Driver\volume     ffff9a0dbfa10d30  
      ffff9a0dbfa9a870  \Driver\rdyboost   ffff9a0dbfa9a9c0  
      ffff9a0dbfa9a4e0  \Driver\iorate     ffff9a0dbfa9a630  
      ffff9a0dbfa99030  \Driver\fvevol     ffff9a0dbfa99180  
    > ffff9a0dbfa95670  \Driver\volmgr     ffff9a0dbfa957c0  HarddiskVolume2
    !DevNode ffff9a0dbfbb6670 :
      DeviceInst is "STORAGE\Volume\{4c17a2d6-57f6-11e8-bc16-806e6f6e6963}#0000000022600000"
      ServiceName is "volume"
    
    1: kd> dt fltmgr!_FLT_RELATED_OBJECTS @rdx
       +0x000 Size             : 0x30
       +0x002 TransactionContext : 0
       +0x008 Filter           : 0xffff9a0d`bfbcc9c0 _FLT_FILTER
       +0x010 Volume           : 0xffff9a0d`bfbe3010 _FLT_VOLUME
       +0x018 Instance         : 0xffff9a0d`bfbb2010 _FLT_INSTANCE
       +0x020 FileObject       : 0xffff9a0d`c7402820 _FILE_OBJECT
       +0x028 Transaction      : (null) 
    

    上記はあくまでも一例ですが、最低限このように2つのファイル パスでのコール状態を精査し、その違いを把握しない限りは、この問題は解決できないと思います。
    (それを調べるだけの「根性」が無いのであれば、MS の有償サポートの利用をお勧めします。)
    2022年5月19日 2:39
  • 取得したパス名に「\;RdpDr;:1\192.168.X.X」のようなパス名の場合、このアクセスを遮断することができず困っています。

    常識的に考えて、それはパス名ではなく、「;」で区切ったパスのリストではないかと思います。

    そんなパス名を渡した場合、動かない方が普通です。

    問題なく出来るのは、それが正しい「パス名」だからです。

    2022年5月19日 9:49
  • ご教示頂き、ありがとうございます。コールスタックを確認し、ご返信させていただきます。その際は、よろしくお願い致します。
    2022年5月20日 3:50
  • 色々とご教示いただき、あいがとうございます。

    「¥;RdpDr;:1¥192.168.X.X」のパスは、コマンドプロンプトから「net use ¥¥192.168.X.X」を実行した場合に発生します。

    net useコマンドを実行したときのコールスタック等の情報を以下に記載いたします。

    うまくコードが投稿できなったため、全角に変換して記載します。

    ■1回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationNetworkQueryOpen
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughFastIo
    FLTMGR!FastIoQuerryOpen
    nt!IopQuerryInformation
    nt!IopParseDevice
    nt!ObpLookupObjectName
    nt!ObOpenObjectByName
    nt!NtQueryAttributesFile
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 2
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1

    kd> dt Iopbの内容
    IrpFlags: 0x0
    MajorFunction: 0xf2
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffff838ac7b0f8f0
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    FileName: ”¥;RdpDr¥;:1¥192.168.5.10” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0x0


    ■2回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationCreate
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughInternal
    FLTMGR!FltpCreate
    nt!IofCallDriver
    nt!IopCallDriverWithTracing
    nt!IopParseDevice
    nt!ObpLookupObjectName
    nt!ObOpenObjectByNameEx
    nt!NtQueryAttributesFile
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 9
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1 ’’

    kd> dt Iopbの内容
    IrpFlags: 0x884
    MajorFunction: 0x0
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffffe182f168b810
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    FileName: ”¥;RdpDr¥;:1¥192.168.5.10” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0x0

    ■3回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationPassThrough
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughInternal
    FLTMGR!FltpPassThrough
    FLTMGR!FltpFltpDispatch
    nt!IofCallDriver
    nt!IopSynchronuosServiceTail
    nt!NtQueryVolumeInformaionFile
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 9
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1 ’’

    kd> dt Iopbの内容
    IrpFlags: 0x60870
    MajorFunction: 0xa
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffffe182eb3d69d0
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    Flags: 0x40002
    FileName: ”¥;:00000000000960e4¥192.168.5.10¥IPC$” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0xffffe182eee55e60

    ■4回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationPassThrough
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughInternal
    FLTMGR!FltpPassThrough
    FLTMGR!FltpFsControl
    nt!IofCallDriver
    nt!IopSynchronuosServiceTail
    nt!IopXxxControlFile
    nt!NtFsControlFile
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 9
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1 ’’

    kd> dt Iopbの内容
    IrpFlags: 0x60870
    MajorFunction: 0xd
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffffe182eb3d69d0
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    Flags: 0x40002
    FileName: ”¥;:00000000000960e4¥192.168.5.10¥IPC$” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0xffffe182eee55e60

    ■5回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationPassThrough
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughInternal
    FLTMGR!FltpPassThrough
    FLTMGR!FltpDispatch
    nt!IofCallDriver
    nt!IopCloseFile
    nt!obCloseHandleTableEntry
    nt!NtClose
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 1
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1 ’’

    kd> dt Iopbの内容
    IrpFlags: 0x404
    MajorFunction: 0x12
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffffe182eb3d69d0
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    Flags: 0x40002
    FileName: ”¥;:00000000000960e4¥192.168.5.10¥IPC$” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0xffffe182eee55e60

    ■6回目のブレーク
    kd> !thread
    callSite
    passTrough!PtTestCallbackData
    passTrough!PtPreOperationPassThrough
    FLTMGR!FltpPerformPreCallbacksWorker
    FLTMGR!PassThroughInternal
    FLTMGR!FltpPassThrough
    FLTMGR!FltpFsControl
    FLTMGR!FltpDispatch
    nt!IofCallDriver
    nt!IopDeleteFile
    nt!ObpRemoveObject
    nt!ObfDeNtFsControlFilereferenceObjectWithTag
    nt!ObCloseHandleTableEntry
    nt!NtClose
    nt!KiSystemServiceCopyEnd

    kd> dt fltmgr!_FLT_CALLBACK_DATA @rcx
    Flags: 1
    Thread: _KTHREAD
    Iopb: _FLT_IO_PARAMETER_BLOCK
    IoStatus: _IO_STATUS_BLOCK
    TagData: (null)
    QueueLinks: _LIST_ENTRY
    QueueContext: [2] (null)
    FilterContext: [4] (null)
    RequestorMode: 1 ’’

    kd> dt Iopbの内容
    IrpFlags: 0x404
    MajorFunction: 0x2
    MinorFunction: 0x0
    OperationFlags: 0x0
    Reserved: 0x0
    TargetFileObject: 0xffffe182eb3d69d0
    TargetInstance: 0xffffe182f0497660
    Parameters: [ Type: _FLT_PARAMETERS]

    kd> dt TargetFileObjectの内容
    Type: 5
    Size: 216
    DeviceObject: 0xffffe182e62c9af0 : Device for ”¥FileSystem¥Mup” [Type: _FILE_OBJECT *]
    Vpb: 0x0
    FsContext: 0x0
    FsContext2: 0x0
    SectionObjectPointer: 0x0
    PrivateCacheMap: 0x0
    FinalStatus: 0
    ~(略)~
    Flags: 0x40002
    FileName: ”¥;:00000000000960e4¥192.168.5.10¥IPC$” [Type: _UNICODE_STRING]
    ~(略)~
    FileObjectExtension: 0xffffe182e62c9af0

    Fast I/Oのコールバック関数(IRP_MJ_NETWORK_QUERY_OPEN)では、「FLT_PREOP_DISALLOW_FASTIO」を返しています。
    その他のコールバック関数では、以下のコードを実行し、関数を抜けています。

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;
    Data->IoStatus.Information = 0;
    return FLT_PREOPE_COMPLETE;

    しかし、共有フォルダへのアクセスをブロックできていません。

    ブロックするためには、どうすればよろしいでしょうか。
    アドバイスをいただければ幸いです。

    以上、よろしくお願いいたします。

    2022年5月26日 12:52
  • 返信を書いたでですが、投稿できないみたいです。
    一生懸命書いたのに。。。。


    2022年5月27日 1:54
  • ご返信をいただいたようで、ありがとうございます。私も投稿出来ず、苦労致しました。投稿ができるようになりましたら、ご無理を申しますが、何卒、アドバイスを頂きたく存じますので、よろしくお願い致します。
    2022年5月27日 3:26
  • ここ↓に返信ファイルをアップロードしました。

    https://xgf.nu/L3Xt

    P.S.
    アップロードした返信ファイルにも書きましたが、"\;Csc\.\.\192.168.X.X" パス名でのオープン要求は、ブロックしてるんですか?

    • 編集済み お馬鹿 2022年5月28日 1:41 追記
    2022年5月27日 3:46
  • ご返信いただき、ありがとうございます。アップロードいただきました内容を拝見いたしました。

    ご質問がございます。

    私の理解では、ネットワークリダイレクターでは、Lanman Workstationなど、どこに振り分けるのかという判断を行っていますが、「\;RdpDr;」のようなプレフィックスが付与されることはないと理解しています。この理解は、間違っているのでしょうか。

    以下のマイクロソフト社のドキュメント等も確認しています。

    「UNC 名前付けと MUP のサポート」などの文章

    https://docs.microsoft.com/ja-jp/windows-hardware/drivers/ifs/support-for-unc-naming-and-mup


    > アップロードした返信ファイルにも書きましたが、"\;Csc\.\.\192.168.X.X" パス名でのオープン要求は、ブロックしてるんですか?

    「192.168.X.X」が含まれているパス名は、すべてブロックしています。


    動作検証を実施しているWindows10環境では、コマンドプロンプトから「net use \\192.168.X.X\share」コマンドを実行すると、パス名に「\;RdpDr;:1\192.168.X.X」のように「\;RdpDr;」が含まれます。

    皆様のWindows10環境では、このようにパス名に、「\;RdpDr;」が含まれていますでしょうか。

    お手数をお掛けいたしますが、ご確認いただき、結果について、ご教示いただければ幸いです。

    2022年5月28日 14:09
  • > 私の理解では、
    > ネットワークリダイレクターでは、Lanman Workstationなど、
    > どこに振り分けるのかという判断を行っていますが、
    >「\;RdpDr;」のようなプレフィックスが付与されることはないと理解しています。

    先に私が提示した、ブレークポイントでの確認は、実施されたのですか?

    P.S.
    あなたの提示したドキュメントにも、ちゃんと明記されているのでは?

    • 編集済み お馬鹿 2022年5月29日 23:57
    2022年5月28日 17:59
  • ご返信いただき、ありがとうございます。

    ご教示いただきました以下のブレークポイントを設定し、デバックを行いましたところ

    MUPおよびRDPDRに届いていました。

    ・bp mup!MupCreate
    ・bp rdpdr!DrPeekDispatch
    ・bp csc!CscFsdDispatch

    フォーラムの不具合で、デバックログを投稿できませんでしたので、取り急ぎ、ご返信いたします。
    お気づきの点など、ございましたら、ご教示いただけましたら幸いです。
    以上、よろしくお願いいたします。

    一部では、ありますが、デバックログを記載いたします。

    ----- MupCreate -----
     # Child-SP          RetAddr               Call Site
    00 ffff8c88`a015f0e8 fffff806`44e4e565     mup!MupCreate
    01 ffff8c88`a015f0f0 fffff806`46f472af     nt!IofCallDriver+0x55
    02 ffff8c88`a015f130 fffff806`46f7c0d4     FLTMGR!FltpLegacyProcessingAfterPreCallbacksCompleted+0x28f
    03 ffff8c88`a015f1a0 fffff806`44e4e565     FLTMGR!FltpCreate+0x324
    04 ffff8c88`a015f250 fffff806`44e9c224     nt!IofCallDriver+0x55
    05 ffff8c88`a015f290 fffff806`452255bd     nt!IoCallDriverWithTracing+0x34
    06 ffff8c88`a015f2e0 fffff806`4521319e     nt!IopParseDevice+0x117d
    07 ffff8c88`a015f450 fffff806`452354ea     nt!ObpLookupObjectName+0x3fe
    08 ffff8c88`a015f620 fffff806`45300f85     nt!ObOpenObjectByNameEx+0x1fa
    09 ffff8c88`a015f750 fffff806`450096b5     nt!NtQueryAttributesFile+0x1c5
    0a ffff8c88`a015fa00 00007ffd`2ae0d4e4     nt!KiSystemServiceCopyEnd+0x25
    0b 00000011`f253e438 00007ffd`246813b6     0x00007ffd`2ae0d4e4
    0c 00000011`f253e440 00000011`f253f600     0x00007ffd`246813b6
    0d 00000011`f253e448 00000011`f253e540     0x00000011`f253f600
    0e 00000011`f253e450 00000152`f8e86d58     0x00000011`f253e540
    0f 00000011`f253e458 00000152`f8e86d58     0x00000152`f8e86d58
    10 00000011`f253e460 00000152`f9050000     0x00000152`f8e86d58
    11 00000011`f253e468 00000000`00000000     0x00000152`f9050000
    rax=fffff806496ae7e0 rbx=ffffe70e63749010 rcx=ffffe70e5d7f8cf0
    rdx=ffffe70e69f6b9f0 rsi=ffffe70e69f6b9f0 rdi=ffffe70e5da92b80
    rip=fffff806496ae7e0 rsp=ffff8c88a015f0e8 rbp=0000000000000008
     r8=0000000000000000  r9=ffffe70e5d7f8cf0 r10=fffff806496ae7e0
    r11=0000000000000000 r12=0000000000000000 r13=ffffe70e6cd8a900
    r14=ffffe70e69f6bb98 r15=0000000000000000
    iopl=0         nv up ei pl zr na po nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040246
    mup!MupCreate:
    fffff806`496ae7e0 488bc4          mov     rax,rsp
    Device object (ffffe70e5d7f8cf0) is for:
     Mup \FileSystem\Mup DriverObject ffffe70e5d7bfd20
    Current Irp 00000000 RefCount 12 Type 00000014 Flags 00040040
    SecurityDescriptor ffffa902502033a0 DevExt 00000000 DevObjExt ffffe70e5d7f8e40 
    ExtensionFlags (0x00000800)  DOE_DEFAULT_SD_PRESENT
    Characteristics (0x00020010)  FILE_REMOTE_DEVICE, FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL
    AttachedDevice (Upper) ffffe70e5da92b80 \FileSystem\FltMgr
    Device queue is not busy.
    Irp is active with 4 stacks 3 is current (= 0xffffe70e69f6bb50)
     No Mdl: No System Buffer: Thread ffffe70e6a8b1080:  Irp stack trace.  
         cmd  flg cl Device   File     Completion-Context
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000
    
                Args: 00000000 00000000 00000000 00000000
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000
    
                Args: 00000000 00000000 00000000 00000000
    >[IRP_MJ_CREATE(0), N/A(0)]
                0 e0 ffffe70e5d7f8cf0 ffffe70e6cd8a8e0 fffff80646f4c1e0-ffffe70e63749010 Success Error Cancel
               \FileSystem\Mup    FLTMGR!FltpSynchronizedOperationCompletion
                Args: ffff8c88a015f3e8 01200000 00070000 00000000
     [IRP_MJ_CREATE(0), N/A(0)]
                0  0 ffffe70e5da92b80 ffffe70e6cd8a8e0 00000000-00000000
               \FileSystem\FltMgr
                Args: ffff8c88a015f3e8 01200000 00070000 00000000
       +0x000 MajorFunction    : 0 ’’
       +0x001 MinorFunction    : 0 ’’
       +0x002 Flags            : 0 ’’
       +0x003 Control          : 0xe0 ’’
       +0x008 Parameters       : <anonymous-tag>
       +0x028 DeviceObject     : 0xffffe70e`5d7f8cf0 _DEVICE_OBJECT
       +0x030 FileObject       : 0xffffe70e`6cd8a8e0 _FILE_OBJECT
       +0x038 CompletionRoutine : 0xfffff806`46f4c1e0     long  FLTMGR!FltpSynchronizedOperationCompletion+0
       +0x040 Context          : 0xffffe70e`63749010 Void
      !DevObj           !DrvObj            !DevExt           ObjectName
      ffffe70e5da92b80  \FileSystem\FltMgr ffffe70e5da92cd0
    > ffffe70e5d7f8cf0  \FileSystem\Mup    00000000  Mup
    
    \;RdpDr\;:1\192.168.0.5\share
    
    Device Object: 0xffffe70e5d7f8cf0   \FileSystem\Mup
    Vpb is NULL
    
    Flags:  0x0
    
    CurrentByteOffset: 0
    ----- DrPeekDispacth -----
     # Child-SP          RetAddr               Call Site
    00 ffff8c88`a015ef98 fffff806`44e4e565     rdpdr!DrPeekDispatch
    01 ffff8c88`a015efa0 fffff806`496af188     nt!IofCallDriver+0x55
    02 ffff8c88`a015efe0 fffff806`496aecd9     mup!MupiCallUncProvider+0xb8
    03 ffff8c88`a015f050 fffff806`496ae9af     mup!MupStateMachine+0x59
    04 ffff8c88`a015f080 fffff806`44e4e565     mup!MupCreate+0x1cf
    05 ffff8c88`a015f0f0 fffff806`46f472af     nt!IofCallDriver+0x55
    06 ffff8c88`a015f130 fffff806`46f7c0d4     FLTMGR!FltpLegacyProcessingAfterPreCallbacksCompleted+0x28f
    07 ffff8c88`a015f1a0 fffff806`44e4e565     FLTMGR!FltpCreate+0x324
    08 ffff8c88`a015f250 fffff806`44e9c224     nt!IofCallDriver+0x55
    09 ffff8c88`a015f290 fffff806`452255bd     nt!IoCallDriverWithTracing+0x34
    0a ffff8c88`a015f2e0 fffff806`4521319e     nt!IopParseDevice+0x117d
    0b ffff8c88`a015f450 fffff806`452354ea     nt!ObpLookupObjectName+0x3fe
    0c ffff8c88`a015f620 fffff806`45300f85     nt!ObOpenObjectByNameEx+0x1fa
    0d ffff8c88`a015f750 fffff806`450096b5     nt!NtQueryAttributesFile+0x1c5
    0e ffff8c88`a015fa00 00007ffd`2ae0d4e4     nt!KiSystemServiceCopyEnd+0x25
    0f 00000011`f253e438 00007ffd`246813b6     0x00007ffd`2ae0d4e4
    10 00000011`f253e440 00000011`f253f600     0x00007ffd`246813b6
    11 00000011`f253e448 00000011`f253e540     0x00000011`f253f600
    12 00000011`f253e450 00000152`f8e86d58     0x00000011`f253e540
    13 00000011`f253e458 00000152`f8e86d58     0x00000152`f8e86d58
    14 00000011`f253e460 00000152`f9050000     0x00000152`f8e86d58
    15 00000011`f253e468 00000000`00000000     0x00000152`f9050000
    rax=fffff8065d3e0380 rbx=ffffe70e67c2c2b0 rcx=ffffe70e6680f670
    rdx=ffffe70e69f6b9f0 rsi=ffffa902502c4b80 rdi=0000000000000000
    rip=fffff8065d3e0380 rsp=ffff8c88a015ef98 rbp=ffffe70e69f6b9f0
     r8=0000000000000000  r9=ffffe70e6680f670 r10=fffff8065d3e0380
    r11=0000000000000000 r12=fffff806496a8000 r13=ffffe70e6cd8a900
    r14=ffffe70e64670500 r15=ffffe70e69f6bb50
    iopl=0         nv up ei pl zr na po nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040246
    rdpdr!DrPeekDispatch:
    fffff806`5d3e0380 48895c2420      mov     qword ptr [rsp+20h],rbx ss:0018:ffff8c88`a015efb8=fffff806455b2094
    Device object (ffffe70e6680f670) is for:
      \Driver\RDPDR DriverObject ffffe70e63e88d20
    Current Irp 00000000 RefCount 0 Type 00000014 Flags 00000000
    SecurityDescriptor ffffa90253305ee0 DevExt ffffe70e6680f7c0 DevObjExt ffffe70e6680fec0 
    ExtensionFlags (0000000000)  
    Characteristics (0x00000010)  FILE_REMOTE_DEVICE
    Device queue is not busy.
    Irp is active with 4 stacks 2 is current (= 0xffffe70e69f6bb08)
     No Mdl: No System Buffer: Thread ffffe70e6a8b1080:  Irp stack trace.  
         cmd  flg cl Device   File     Completion-Context
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000
    
                Args: 00000000 00000000 00000000 00000000
    >[IRP_MJ_CREATE(0), N/A(0)]
                0 e0 ffffe70e6680f670 ffffe70e6cd8a8e0 fffff806496a1090-ffffe70e67c2c2b0 Success Error Cancel
               \Driver\RDPDR    mup!MupiUncProviderCompletion
                Args: ffff8c88a015f3e8 01200000 00070000 00000000
     [IRP_MJ_CREATE(0), N/A(0)]
                0 e0 ffffe70e5d7f8cf0 ffffe70e6cd8a8e0 fffff80646f4c1e0-ffffe70e63749010 Success Error Cancel
               \FileSystem\Mup    FLTMGR!FltpSynchronizedOperationCompletion
                Args: ffff8c88a015f3e8 01200000 00070000 00000000
     [IRP_MJ_CREATE(0), N/A(0)]
                0  0 ffffe70e5da92b80 ffffe70e6cd8a8e0 00000000-00000000
               \FileSystem\FltMgr
                Args: ffff8c88a015f3e8 01200000 00070000 00000000
       +0x000 MajorFunction    : 0 ’’
       +0x001 MinorFunction    : 0 ’’
       +0x002 Flags            : 0 ’’
       +0x003 Control          : 0xe0 ’’
       +0x008 Parameters       : <anonymous-tag>
       +0x028 DeviceObject     : 0xffffe70e`6680f670 _DEVICE_OBJECT
       +0x030 FileObject       : 0xffffe70e`6cd8a8e0 _FILE_OBJECT
       +0x038 CompletionRoutine : 0xfffff806`496a1090     long  mup!MupiUncProviderCompletion+0
       +0x040 Context          : 0xffffe70e`67c2c2b0 Void
      !DevObj           !DrvObj            !DevExt           ObjectName
    > ffffe70e6680f670  \Driver\RDPDR      ffffe70e6680f7c0
    
    \;:1\192.168.0.5\share
    
    Device Object: 0xffffe70e5d7f8cf0   \FileSystem\Mup
    Vpb is NULL
    
    Flags:  0x0
    
    CurrentByteOffset: 0
    
    File object extension is at ffffe70e6361d260:
    


    2022年5月30日 8:58
  • kiyo01123 さんと NSKY123 さんは同一人物?
    2022年5月30日 9:13
  • お馬鹿さん

    お世話になります。kiyo01123です。

    混乱を招かれましたようでしたら、申し訳ございません。

    別のNSKY123で投稿させていただきました。今後は、NSKY123で投稿させていただきます。

    申し訳ございませんが、よろしくお願いいたします。

    2022年5月30日 10:42
  • 「192.168.X.X」が含まれているパス名は、すべてブロックしています。』とのことですが、提示されたコールスタックの状態を確認する限り、Mini-Filter 側で "\;RdpDr\;:1\192.168.0.5\share" のパスに対するブロックができていません。

    デバッガ上でトレースするか、あるいはデバッガ上にログを吐かせ、該当パス名に対するブロックが確実に行われているか、確認されることをお勧めします。

    P.S.
    先の返信で添付されたトレース ログは、Visual Studio で採取ししたものでしょうか?
    (Visual Studio でデバッグしたことないので、WinDbg と同じコマンドでトレース ログをうまく採取出来たのか知りたいです。)
    それにしても「見ずらいログ!」と思ったら、私のコマンド サンプルがいけなかったんですね。。。。
    下記のように ".echo" コマンドで注釈を入れると、少しは見やすくなります。
    (個人的には「ひらがな」を使うと、より見やすくなるような気がしてます。)

    bp mup!MupCreate ".echo -----------------------; .echo [こーるすたっく]; k; .echo [れじすた]; r; .echo [でぶァイス おぶじぇくと]; !devobj @rcx; .echo [IRP]; !irp @rdx; r @$t1=poi(@rdx+0x078+0x040); .echo [IO_STACK_LOCATION]; dt nt!_IO_STACK_LOCATION @$t1; r @$t2=poi(@$t1+0x28); r @$t3=poi(@$t1+0x30); .echo [でぶァイス すたっく]; !devstack @$t2; .echo [ふぁいる おぶじぇくと]; !fileobj @$t3; g"




    • 編集済み お馬鹿 2022年5月30日 23:18
    2022年5月30日 14:04
  • ご返信いただき、ありがとうございます。

    > 先の返信で添付されたトレース ログは、Visual Studio で採取ししたものでしょうか?

    WinDbgを使用しています。少し見やすくなるようにしてみました。

    > デバッガ上でトレースするか、あるいはデバッガ上にログを吐かせ、該当パス名に対するブロックが確実に行われているか、確認されることをお勧めします。

    コードを修正し、すべての操作前コールバック関数(PtPreOperationBlock)において、
    パス名に「192.168.0.5」が含まれる場合は、以下のように設定しブロックするようにしました。

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;
    Data->IoStatus.Information = 0;

    return FLT_PREOP_COMPLETE;

    また、「IRP_MJ_FAST_IO_CHECK_IF_POSSIBLE」及び「IRP_MJ_NETWORK_QUERY_OPEN」に対する
    Fast I/Oのコールバック関数(PassThrough!PtPreOperationFast)では、
    IoStatusは変更せず、FLT_PREOP_DISALLOW_FASTIOで関数を抜けています。

    return FLT_PREOP_DISALLOW_FASTIO;

    PtSetIoStatusAccessDeny関数は、ブレークポイントを設定するための関数で
    処理は行っていません。

    操作前コールバック関数で、アクセス拒否を設定し、FLT_PREOP_COMPLETEで戻っていますが
    その後、MUPへIRP要求が飛んでいるようです。

    ブロックするには、他の処理が必要になるのでしょうか。

    以上、よろしくお願いいたします。

    以下にログを記載します。

    0: kd> g
    ********** PtIoStatusAccessDeny **********
    ---------- [レジストリ] ------ # Child-SP          RetAddr               Call Site
    00 fffffe09`11266fd8 fffff800`3a0c1472     PassThrough!PtSetIoStatusAccessDeny [C:\Users\user01\source\repos\passThrough\passThrough\passThrough.c @ 661] 
    01 fffffe09`11266fe0 fffff800`3f54666c     PassThrough!PtPreOperationFastIO+0x162 [C:\Users\user01\source\repos\passThrough\passThrough\passThrough.c @ 789] 
    02 fffffe09`11267040 fffff800`3f5446f3     FLTMGR!FltpPerformPreCallbacksWorker+0x36c
    03 fffffe09`11267160 fffff800`3f57bac1     FLTMGR!FltpPassThroughFastIo+0xc3
    04 fffffe09`112671e0 fffff800`3ca26d94     FLTMGR!FltpFastIoQueryOpen+0x131
    05 fffffe09`11267280 fffff800`3ca253b0     nt!IopQueryInformation+0x94
    06 fffffe09`112672e0 fffff800`3ca1319e     nt!IopParseDevice+0xf70
    07 fffffe09`11267450 fffff800`3ca354ea     nt!ObpLookupObjectName+0x3fe
    08 fffffe09`11267620 fffff800`3cb00f85     nt!ObOpenObjectByNameEx+0x1fa
    09 fffffe09`11267750 fffff800`3c8096b5     nt!NtQueryAttributesFile+0x1c5
    0a fffffe09`11267a00 00007ff9`abecd4e4     nt!KiSystemServiceCopyEnd+0x25
    0b 000000d1`5ce7e238 00007ff9`932413b6     ntdll!NtQueryAttributesFile+0x14
    0c 000000d1`5ce7e240 000000d1`5ce7f400     0x00007ff9`932413b6
    0d 000000d1`5ce7e248 000000d1`5ce7e340     0x000000d1`5ce7f400
    0e 000000d1`5ce7e250 00000241`184a7538     0x000000d1`5ce7e340
    0f 000000d1`5ce7e258 00000241`184a7538     0x00000241`184a7538
    10 000000d1`5ce7e260 00000000`00000011     0x00000241`184a7538
    11 000000d1`5ce7e268 00007ff9`abe5b3c7     0x11
    12 000000d1`5ce7e270 00007ff9`abe4c3c8     ntdll!RtlpAllocateHeapInternal+0x9a7
    13 000000d1`5ce7e380 00007ff9`abe4aced     ntdll!sxsisol_SearchActCtxForDllName+0x114
    14 000000d1`5ce7e4f0 00007ff9`abe4a613     ntdll!RtlDosApplyFileIsolationRedirection_Ustr+0x30d
    15 000000d1`5ce7e770 00007ff9`abe4a407     ntdll!LdrpApplyFileNameRedirection+0xff
    16 000000d1`5ce7e810 00007ff9`abe4dbcd     ntdll!LdrpPreprocessDllName+0xa7
    17 000000d1`5ce7e880 00007ff9`abe60571     ntdll!LdrpFindLoadedDll+0xad
    18 000000d1`5ce7ea10 00000000`000000b4     ntdll!LdrpResolveProcedureAddress+0x17d
    19 000000d1`5ce7eb60 00000241`1849ac30     0xb4
    1a 000000d1`5ce7eb68 000000d1`5ce7ec60     0x00000241`1849ac30
    1b 000000d1`5ce7eb70 00000241`184ae680     0x000000d1`5ce7ec60
    1c 000000d1`5ce7eb78 00000000`00000000     0x00000241`184ae680
    ---------- [レジストリ] ------rax=0000000000000000 rbx=ffff9a83b0fe7050 rcx=ffff9a83b0fe7138
    rdx=fffffe09112670d8 rsi=ffffae8097678888 rdi=ffff9a83a2f52708
    rip=fffff8003a0c15f0 rsp=fffffe0911266fd8 rbp=fffffe09112670f9
     r8=0000000000000008  r9=000000000000004d r10=0000000073414e42
    r11=fffffe0911266fd8 r12=ffff9a83b0fe70d0 r13=fffffe0911267210
    r14=ffff9a83b3702880 r15=0000000010000004
    iopl=0         nv up ei ng nz na po nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040286
    PassThrough!PtSetIoStatusAccessDeny:
    fffff800`3a0c15f0 4889542410      mov     qword ptr [rsp+10h],rdx ss:0018:fffffe09`11266fe8=fffffe09112670f9
    ----- [FLT_CALLBACK_DATA] ------
       +0x000 Flags            : 2
       +0x008 Thread           : 0xffff9a83`b3bb9080 _KTHREAD
       +0x010 Iopb             : 0xffff9a83`b0fe7190 _FLT_IO_PARAMETER_BLOCK
       +0x018 IoStatus         : _IO_STATUS_BLOCK
       +0x028 TagData          : (null) 
       +0x030 QueueLinks       : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
       +0x040 QueueContext     : [2] (null) 
       +0x030 FilterContext    : [4] (null) 
       +0x050 RequestorMode    : 1 ''
    ----- [FLT_IO_PARAMETER_BLOCK] -----
       +0x000 IrpFlags         : 0
       +0x004 MajorFunction    : 0xf2 ''
       +0x005 MinorFunction    : 0 ''
       +0x006 OperationFlags   : 0 ''
       +0x007 Reserved         : 0 ''
       +0x008 TargetFileObject : 0xfffffe09`112678f0 _FILE_OBJECT
       +0x010 TargetInstance   : 0xffff9a83`b3702050 _FLT_INSTANCE
       +0x018 Parameters       : _FLT_PARAMETERS
    ----- [FILE_OBJECT] -----
       +0x000 Type             : 0n5
       +0x002 Size             : 0n216
       +0x008 DeviceObject     : 0xffff9a83`a3ee60d0 _DEVICE_OBJECT
       +0x010 Vpb              : (null) 
       +0x018 FsContext        : (null) 
       +0x020 FsContext2       : (null) 
       +0x028 SectionObjectPointer : (null) 
       +0x030 PrivateCacheMap  : (null) 
       +0x038 FinalStatus      : 0n0
       +0x040 RelatedFileObject : (null) 
       +0x048 LockOperation    : 0 ''
       +0x049 DeletePending    : 0 ''
       +0x04a ReadAccess       : 0 ''
       +0x04b WriteAccess      : 0 ''
       +0x04c DeleteAccess     : 0 ''
       +0x04d SharedRead       : 0 ''
       +0x04e SharedWrite      : 0 ''
       +0x04f SharedDelete     : 0 ''
       +0x050 Flags            : 0
       +0x058 FileName         : _UNICODE_STRING "\;RdpDr\;:1\192.168.0.5\share"
       +0x068 CurrentByteOffset : _LARGE_INTEGER 0x0
       +0x070 Waiters          : 0
       +0x074 Busy             : 0
       +0x078 LastLock         : (null) 
       +0x080 Lock             : _KEVENT
       +0x098 Event            : _KEVENT
       +0x0b0 CompletionContext : (null) 
       +0x0b8 IrpListLock      : 0
       +0x0c0 IrpList          : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
       +0x0d0 FileObjectExtension : (null) 
    ********** PtIoStatusAccessDeny **********
    ---------- [レジストリ] ------ # Child-SP          RetAddr               Call Site
    00 fffffe09`11266fc8 fffff800`3a0c12c2     PassThrough!PtSetIoStatusAccessDeny [C:\Users\user01\source\repos\passThrough\passThrough\passThrough.c @ 661] 
    01 fffffe09`11266fd0 fffff800`3f54666c     PassThrough!PtPreOperationBlock+0x162 [C:\Users\user01\source\repos\passThrough\passThrough\passThrough.c @ 727] 
    02 fffffe09`11267030 fffff800`3f54611a     FLTMGR!FltpPerformPreCallbacksWorker+0x36c
    03 fffffe09`11267150 fffff800`3f57c0c0     FLTMGR!FltpPassThroughInternal+0xca
    04 fffffe09`112671a0 fffff800`3c64e565     FLTMGR!FltpCreate+0x310
    05 fffffe09`11267250 fffff800`3c69c224     nt!IofCallDriver+0x55
    06 fffffe09`11267290 fffff800`3ca255bd     nt!IoCallDriverWithTracing+0x34
    07 fffffe09`112672e0 fffff800`3ca1319e     nt!IopParseDevice+0x117d
    08 fffffe09`11267450 fffff800`3ca354ea     nt!ObpLookupObjectName+0x3fe
    09 fffffe09`11267620 fffff800`3cb00f85     nt!ObOpenObjectByNameEx+0x1fa
    0a fffffe09`11267750 fffff800`3c8096b5     nt!NtQueryAttributesFile+0x1c5
    0b fffffe09`11267a00 00007ff9`abecd4e4     nt!KiSystemServiceCopyEnd+0x25
    0c 000000d1`5ce7e238 00007ff9`932413b6     ntdll!NtQueryAttributesFile+0x14
    0d 000000d1`5ce7e240 000000d1`5ce7f400     0x00007ff9`932413b6
    0e 000000d1`5ce7e248 000000d1`5ce7e340     0x000000d1`5ce7f400
    0f 000000d1`5ce7e250 00000241`184a7538     0x000000d1`5ce7e340
    10 000000d1`5ce7e258 00000241`184a7538     0x00000241`184a7538
    11 000000d1`5ce7e260 00000000`00000011     0x00000241`184a7538
    12 000000d1`5ce7e268 00007ff9`abe5b3c7     0x11
    13 000000d1`5ce7e270 00007ff9`abe4c3c8     ntdll!RtlpAllocateHeapInternal+0x9a7
    14 000000d1`5ce7e380 00007ff9`abe4aced     ntdll!sxsisol_SearchActCtxForDllName+0x114
    15 000000d1`5ce7e4f0 00007ff9`abe4a613     ntdll!RtlDosApplyFileIsolationRedirection_Ustr+0x30d
    16 000000d1`5ce7e770 00007ff9`abe4a407     ntdll!LdrpApplyFileNameRedirection+0xff
    17 000000d1`5ce7e810 00007ff9`abe4dbcd     ntdll!LdrpPreprocessDllName+0xa7
    18 000000d1`5ce7e880 00007ff9`abe60571     ntdll!LdrpFindLoadedDll+0xad
    19 000000d1`5ce7ea10 00000000`000000b4     ntdll!LdrpResolveProcedureAddress+0x17d
    1a 000000d1`5ce7eb60 00000241`1849ac30     0xb4
    1b 000000d1`5ce7eb68 000000d1`5ce7ec60     0x00000241`1849ac30
    1c 000000d1`5ce7eb70 00000241`184ae680     0x000000d1`5ce7ec60
    1d 000000d1`5ce7eb78 00000000`00000000     0x00000241`184ae680
    ---------- [レジストリ] ------rax=0000000000000000 rbx=ffff9a83b0fe7050 rcx=ffff9a83b0fe7138
    rdx=fffffe09112670c8 rsi=ffffae8097678888 rdi=ffff9a83a2f522e8
    rip=fffff8003a0c15f0 rsp=fffffe0911266fc8 rbp=fffffe09112670e9
     r8=0000000000000008  r9=000000000000004d r10=0000000073414e42
    r11=fffffe0911266fc8 r12=ffff9a83b0fe70d0 r13=fffffe09112671e0
    r14=ffff9a83b3702280 r15=000000001000000c
    iopl=0         nv up ei ng nz na pe nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040282
    PassThrough!PtSetIoStatusAccessDeny:
    fffff800`3a0c15f0 4889542410      mov     qword ptr [rsp+10h],rdx ss:0018:fffffe09`11266fd8=fffffe09112670e9
    ----- [FLT_CALLBACK_DATA] ------
       +0x000 Flags            : 9
       +0x008 Thread           : 0xffff9a83`b3bb9080 _KTHREAD
       +0x010 Iopb             : 0xffff9a83`b0fe7190 _FLT_IO_PARAMETER_BLOCK
       +0x018 IoStatus         : _IO_STATUS_BLOCK
       +0x028 TagData          : (null) 
       +0x030 QueueLinks       : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
       +0x040 QueueContext     : [2] (null) 
       +0x030 FilterContext    : [4] (null) 
       +0x050 RequestorMode    : 1 ''
    ----- [FLT_IO_PARAMETER_BLOCK] -----
       +0x000 IrpFlags         : 0x884
       +0x004 MajorFunction    : 0 ''
       +0x005 MinorFunction    : 0 ''
       +0x006 OperationFlags   : 0 ''
       +0x007 Reserved         : 0 ''
       +0x008 TargetFileObject : 0xffff9a83`b1c90400 _FILE_OBJECT
       +0x010 TargetInstance   : 0xffff9a83`b3702050 _FLT_INSTANCE
       +0x018 Parameters       : _FLT_PARAMETERS
    ----- [FILE_OBJECT] -----
       +0x000 Type             : 0n5
       +0x002 Size             : 0n216
       +0x008 DeviceObject     : 0xffff9a83`a3ee60d0 _DEVICE_OBJECT
       +0x010 Vpb              : (null) 
       +0x018 FsContext        : (null) 
       +0x020 FsContext2       : (null) 
       +0x028 SectionObjectPointer : (null) 
       +0x030 PrivateCacheMap  : (null) 
       +0x038 FinalStatus      : 0n0
       +0x040 RelatedFileObject : (null) 
       +0x048 LockOperation    : 0 ''
       +0x049 DeletePending    : 0 ''
       +0x04a ReadAccess       : 0 ''
       +0x04b WriteAccess      : 0 ''
       +0x04c DeleteAccess     : 0 ''
       +0x04d SharedRead       : 0 ''
       +0x04e SharedWrite      : 0 ''
       +0x04f SharedDelete     : 0 ''
       +0x050 Flags            : 0
       +0x058 FileName         : _UNICODE_STRING "\;RdpDr\;:1\192.168.0.5\share"
       +0x068 CurrentByteOffset : _LARGE_INTEGER 0x0
       +0x070 Waiters          : 0
       +0x074 Busy             : 0
       +0x078 LastLock         : (null) 
       +0x080 Lock             : _KEVENT
       +0x098 Event            : _KEVENT
       +0x0b0 CompletionContext : (null) 
       +0x0b8 IrpListLock      : 0
       +0x0c0 IrpList          : _LIST_ENTRY [ 0xffff9a83`b1c904c0 - 0xffff9a83`b1c904c0 ]
       +0x0d0 FileObjectExtension : (null) 
    ********** MupCreate **********
    ---------- [コールスタック] ---- # Child-SP          RetAddr               Call Site
    00 fffffe09`116376b8 fffff800`3c64e565     mup!MupCreate
    01 fffffe09`116376c0 fffff800`3f57c2db     nt!IofCallDriver+0x55
    02 fffffe09`11637700 fffff800`3c64e565     FLTMGR!FltpCreate+0x52b
    03 fffffe09`116377b0 fffff800`3c69c224     nt!IofCallDriver+0x55
    04 fffffe09`116377f0 fffff800`3ca255bd     nt!IoCallDriverWithTracing+0x34
    05 fffffe09`11637840 fffff800`3ca1319e     nt!IopParseDevice+0x117d
    06 fffffe09`116379b0 fffff800`3ca354ea     nt!ObpLookupObjectName+0x3fe
    07 fffffe09`11637b80 fffff800`3cb0043f     nt!ObOpenObjectByNameEx+0x1fa
    08 fffffe09`11637cb0 fffff800`3caffefd     nt!IopCreateFile+0x40f
    09 fffffe09`11637d50 fffff800`54562074     nt!IoCreateFileEx+0x11d
    0a fffffe09`11637df0 fffff800`54561f17     dfsc!DfscConnOpenIpcConnectionCallin+0x144
    0b fffffe09`11637f30 fffff800`3c7fb63e     dfsc!DfscConnOpenIpcConnectionCallout+0x37
    0c fffffe09`11637f80 fffff800`3c7fb5fc     nt!KxSwitchKernelStackCallout+0x2e
    0d fffffe09`11267090 fffff800`3c62768d     nt!KiSwitchKernelStackContinue
    0e fffffe09`112670b0 fffff800`3c627482     nt!KiExpandKernelStackAndCalloutOnStackSegment+0x19d
    0f fffffe09`11267150 fffff800`3c6272e3     nt!KiExpandKernelStackAndCalloutSwitchStack+0xf2
    10 fffffe09`112671c0 fffff800`3c62729d     nt!KeExpandKernelStackAndCalloutInternal+0x33
    11 fffffe09`11267230 fffff800`54561c7b     nt!KeExpandKernelStackAndCalloutEx+0x1d
    12 fffffe09`11267270 fffff800`545618e6     dfsc!DfscRmGetReferral+0x27b
    13 fffffe09`11267360 fffff800`545533af     dfsc!DfscCmGetRootReferralState+0x76
    14 fffffe09`112673f0 fffff800`54568e0e     dfsc!DfscGetReferralFromPath+0x7b
    15 fffffe09`11267460 fffff800`5456d001     dfsc!DfscCredVerify+0x8e
    16 fffffe09`11267500 fffff800`54564ee0     dfsc!DfscFsctrlCreateDriveLetter+0x4ad
    17 fffffe09`11267680 fffff800`3c64e565     dfsc!DfscFileSystemControl+0x2dd0
    18 fffffe09`11267700 fffff800`3ca0da18     nt!IofCallDriver+0x55
    19 fffffe09`11267740 fffff800`3ca0e9f7     nt!IopSynchronousServiceTail+0x1a8
    1a fffffe09`112677e0 fffff800`3cac9d96     nt!IopXxxControlFile+0xc67
    1b fffffe09`11267920 fffff800`3c8096b5     nt!NtFsControlFile+0x56
    1c fffffe09`11267990 00007ff9`abecd464     nt!KiSystemServiceCopyEnd+0x25
    1d 000000d1`5ce7dca8 00007ff9`8210faa3     ntdll!NtFsControlFile+0x14
    1e 000000d1`5ce7dcb0 00000000`00000168     0x00007ff9`8210faa3
    1f 000000d1`5ce7dcb8 00000241`184b1270     0x168
    20 000000d1`5ce7dcc0 00000241`183a0fc0     0x00000241`184b1270
    21 000000d1`5ce7dcc8 00000241`184b0000     0x00000241`183a0fc0
    22 000000d1`5ce7dcd0 000000d1`5ce7dd28     0x00000241`184b0000
    23 000000d1`5ce7dcd8 00007ff9`000601e0     0x000000d1`5ce7dd28
    24 000000d1`5ce7dce0 00000241`184b1270     0x00007ff9`000601e0
    25 000000d1`5ce7dce8 00000000`0000004a     0x00000241`184b1270
    26 000000d1`5ce7dcf0 00000000`00000000     0x4a
    ---------- [レジストリ] ------rax=fffff80041cae7e0 rbx=0000000000000000 rcx=ffff9a83a3ee60d0
    rdx=ffff9a83b441e010 rsi=ffff9a83b084f600 rdi=ffff9a83a90f7a70
    rip=fffff80041cae7e0 rsp=fffffe09116376b8 rbp=fffffe0911637749
     r8=0000000000000000  r9=ffff9a83a3ee60d0 r10=fffff80041cae7e0
    r11=0000000000000000 r12=ffff9a83b441e1b8 r13=ffff9a83b084f608
    r14=ffff9a83b441e010 r15=ffff9a83b084f5b0
    iopl=0         nv up ei pl zr na po nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040246
    mup!MupCreate:
    fffff800`41cae7e0 488bc4          mov     rax,rsp
    ---------- [デバイスオブジェクト] -Device object (ffff9a83a3ee60d0) is for:
     Mup \FileSystem\Mup DriverObject ffff9a83a90d8de0
    Current Irp 00000000 RefCount 12 Type 00000014 Flags 00040040
    SecurityDescriptor ffffae807d602c20 DevExt 00000000 DevObjExt ffff9a83a3ee6220 
    ExtensionFlags (0x00000800)  DOE_DEFAULT_SD_PRESENT
    Characteristics (0x00020010)  FILE_REMOTE_DEVICE, FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL
    AttachedDevice (Upper) ffff9a83a90f7a70 \FileSystem\FltMgr
    Device queue is not busy.
    ---------- [IRP] ----------
    Irp is active with 4 stacks 4 is current (= 0xffff9a83b441e1b8)
     No Mdl: System buffer=ffff9a83b4f70530: Thread ffff9a83b3bb9080:  Irp stack trace.  
         cmd  flg cl Device   File     Completion-Context
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000    
    
                Args: 00000000 00000000 00000000 00000000
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000    
    
                Args: 00000000 00000000 00000000 00000000
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000    
    
                Args: 00000000 00000000 00000000 00000000
    >[IRP_MJ_CREATE(0), N/A(0)]
                0  0 ffff9a83a3ee60d0 ffff9a83b084f5b0 00000000-00000000    
               \FileSystem\Mup
                Args: fffffe0911637948 030000a0 00070080 00000034
    ---------- [IO_STACK_LOCATION] ----------
       +0x000 MajorFunction    : 0 ''
       +0x001 MinorFunction    : 0 ''
       +0x002 Flags            : 0 ''
       +0x003 Control          : 0 ''
       +0x008 Parameters       : <anonymous-tag>
       +0x028 DeviceObject     : 0xffff9a83`a3ee60d0 _DEVICE_OBJECT
       +0x030 FileObject       : 0xffff9a83`b084f5b0 _FILE_OBJECT
       +0x038 CompletionRoutine : (null) 
       +0x040 Context          : (null) 
    ---------- [デバイススタック] ---  !DevObj           !DrvObj            !DevExt           ObjectName
      ffff9a83a90f7a70  \FileSystem\FltMgr ffff9a83a90f7bc0  
    > ffff9a83a3ee60d0  \FileSystem\Mup    00000000  Mup
    ---------- [ファイルオブジェクト] -
    \192.168.0.5\IPC$
    
    Device Object: 0xffff9a83a3ee60d0   \FileSystem\Mup
    Vpb is NULL
    
    Flags:  0x2
        Synchronous IO
    
    CurrentByteOffset: 0
    
    ********** RDPDR!DrPeekDispacth **********
    ---------- [コールスタック] ---- # Child-SP          RetAddr               Call Site
    00 fffffe09`116373a8 fffff800`3c64e565     rdpdr!DrPeekDispatch
    01 fffffe09`116373b0 fffff800`41cb0bcd     nt!IofCallDriver+0x55
    02 fffffe09`116373f0 fffff800`41cb07aa     mup!MupiIssueQueryRequest+0x2d
    03 fffffe09`11637430 fffff800`41caf225     mup!MupLocateUncProviderForPath+0x29a
    04 fffffe09`116375b0 fffff800`41caecd9     mup!MupiCallUncProvider+0x155
    05 fffffe09`11637620 fffff800`41cae9af     mup!MupStateMachine+0x59
    06 fffffe09`11637650 fffff800`3c64e565     mup!MupCreate+0x1cf
    07 fffffe09`116376c0 fffff800`3f57c2db     nt!IofCallDriver+0x55
    08 fffffe09`11637700 fffff800`3c64e565     FLTMGR!FltpCreate+0x52b
    09 fffffe09`116377b0 fffff800`3c69c224     nt!IofCallDriver+0x55
    0a fffffe09`116377f0 fffff800`3ca255bd     nt!IoCallDriverWithTracing+0x34
    0b fffffe09`11637840 fffff800`3ca1319e     nt!IopParseDevice+0x117d
    0c fffffe09`116379b0 fffff800`3ca354ea     nt!ObpLookupObjectName+0x3fe
    0d fffffe09`11637b80 fffff800`3cb0043f     nt!ObOpenObjectByNameEx+0x1fa
    0e fffffe09`11637cb0 fffff800`3caffefd     nt!IopCreateFile+0x40f
    0f fffffe09`11637d50 fffff800`54562074     nt!IoCreateFileEx+0x11d
    10 fffffe09`11637df0 fffff800`54561f17     dfsc!DfscConnOpenIpcConnectionCallin+0x144
    11 fffffe09`11637f30 fffff800`3c7fb63e     dfsc!DfscConnOpenIpcConnectionCallout+0x37
    12 fffffe09`11637f80 fffff800`3c7fb5fc     nt!KxSwitchKernelStackCallout+0x2e
    13 fffffe09`11267090 fffff800`3c62768d     nt!KiSwitchKernelStackContinue
    14 fffffe09`112670b0 fffff800`3c627482     nt!KiExpandKernelStackAndCalloutOnStackSegment+0x19d
    15 fffffe09`11267150 fffff800`3c6272e3     nt!KiExpandKernelStackAndCalloutSwitchStack+0xf2
    16 fffffe09`112671c0 fffff800`3c62729d     nt!KeExpandKernelStackAndCalloutInternal+0x33
    17 fffffe09`11267230 fffff800`54561c7b     nt!KeExpandKernelStackAndCalloutEx+0x1d
    18 fffffe09`11267270 fffff800`545618e6     dfsc!DfscRmGetReferral+0x27b
    19 fffffe09`11267360 fffff800`545533af     dfsc!DfscCmGetRootReferralState+0x76
    1a fffffe09`112673f0 fffff800`54568e0e     dfsc!DfscGetReferralFromPath+0x7b
    1b fffffe09`11267460 fffff800`5456d001     dfsc!DfscCredVerify+0x8e
    1c fffffe09`11267500 fffff800`54564ee0     dfsc!DfscFsctrlCreateDriveLetter+0x4ad
    1d fffffe09`11267680 fffff800`3c64e565     dfsc!DfscFileSystemControl+0x2dd0
    1e fffffe09`11267700 fffff800`3ca0da18     nt!IofCallDriver+0x55
    1f fffffe09`11267740 fffff800`3ca0e9f7     nt!IopSynchronousServiceTail+0x1a8
    20 fffffe09`112677e0 fffff800`3cac9d96     nt!IopXxxControlFile+0xc67
    21 fffffe09`11267920 fffff800`3c8096b5     nt!NtFsControlFile+0x56
    22 fffffe09`11267990 00007ff9`abecd464     nt!KiSystemServiceCopyEnd+0x25
    23 000000d1`5ce7dca8 00007ff9`8210faa3     ntdll!NtFsControlFile+0x14
    24 000000d1`5ce7dcb0 00000000`00000168     0x00007ff9`8210faa3
    25 000000d1`5ce7dcb8 00000241`184b1270     0x168
    26 000000d1`5ce7dcc0 00000241`183a0fc0     0x00000241`184b1270
    27 000000d1`5ce7dcc8 00000241`184b0000     0x00000241`183a0fc0
    28 000000d1`5ce7dcd0 000000d1`5ce7dd28     0x00000241`184b0000
    29 000000d1`5ce7dcd8 00007ff9`000601e0     0x000000d1`5ce7dd28
    2a 000000d1`5ce7dce0 00000241`184b1270     0x00007ff9`000601e0
    2b 000000d1`5ce7dce8 00000000`0000004a     0x00000241`184b1270
    2c 000000d1`5ce7dcf0 00000000`00000000     0x4a
    ---------- [レジストリ] ------rax=fffff80056b50380 rbx=ffffae807d6c3a00 rcx=ffff9a83ad5ce060
    rdx=ffff9a83b2e12050 rsi=0000000000000001 rdi=fffffe09116374b0
    rip=fffff80056b50380 rsp=fffffe09116373a8 rbp=fffffe0911637530
     r8=000000000000000e  r9=ffff9a83ad5ce060 r10=fffff80056b50380
    r11=0000000000000000 r12=0000000000000000 r13=00000000c0000201
    r14=0000000000000000 r15=ffff9a83b084f5b0
    iopl=0         nv up ei pl zr na po nc
    cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040246
    rdpdr!DrPeekDispatch:
    fffff800`56b50380 48895c2420      mov     qword ptr [rsp+20h],rbx ss:0018:fffffe09`116373c8=fffff8003c702e93
    ---------- [デバイスオブジェクト] -Device object (ffff9a83ad5ce060) is for:
      \Driver\RDPDR DriverObject ffff9a83ad123d40
    Current Irp 00000000 RefCount 0 Type 00000014 Flags 00000000
    SecurityDescriptor ffffae808150f1e0 DevExt ffff9a83ad5ce1b0 DevObjExt ffff9a83ad5ce8b0 
    ExtensionFlags (0000000000)  
    Characteristics (0x00000010)  FILE_REMOTE_DEVICE
    Device queue is not busy.
    ---------- [IRP] ----------
    Irp is active with 2 stacks 1 is current (= 0xffff9a83b2e12120)
     No Mdl: No System Buffer: Thread ffff9a83b3bb9080:  Irp stack trace.  
         cmd  flg cl Device   File     Completion-Context
    >[IRP_MJ_DEVICE_CONTROL(e), N/A(0)]
                0 e0 ffff9a83ad5ce060 ffff9a83ab255c50 fffff80041ca1110-fffffe09116374b0 Success Error Cancel 
               \Driver\RDPDR    mup!MupiQueryPathCompletionRoutine
                Args: 00000004 00000050 0x140193 fffffe0911637508
     [N/A(0), N/A(0)]
                0  0 00000000 00000000 00000000-00000000    
    
                Args: 00000000 00000000 00000000 00000000
    ---------- [IO_STACK_LOCATION] ----------
       +0x000 MajorFunction    : 0xe ''
       +0x001 MinorFunction    : 0 ''
       +0x002 Flags            : 0 ''
       +0x003 Control          : 0xe0 ''
       +0x008 Parameters       : <anonymous-tag>
       +0x028 DeviceObject     : 0xffff9a83`ad5ce060 _DEVICE_OBJECT
       +0x030 FileObject       : 0xffff9a83`ab255c50 _FILE_OBJECT
       +0x038 CompletionRoutine : 0xfffff800`41ca1110     long  mup!MupiQueryPathCompletionRoutine+0
       +0x040 Context          : 0xfffffe09`116374b0 Void
    ---------- [デバイススタック] ---  !DevObj           !DrvObj            !DevExt           ObjectName
    > ffff9a83ad5ce060  \Driver\RDPDR      ffff9a83ad5ce1b0  
    ---------- [ファイルオブジェクト] -
    
    
    Device Object: 0xffff9a83a3ee60d0   \FileSystem\Mup
    Vpb is NULL
    
    Flags:  0x40000
        Handle Created
    
    FsContext: 0xfffff8005446c3c0    FsContext2: 0x00000000
    CurrentByteOffset: 0
    
    
    File object extension is at ffff9a83ad3c03e0:
    
    0: kd>

    2022年5月31日 5:21
  • デバッグ ログから解析する場合、断片的な一部分のみを抜粋しても意味がありません。
    (全体的な流れをチェックしないと、的確な判断ができない。)
    しかも提示されているログは、PassThrough ドライバから mup ドライバへの時系列的に連続したログではなく、あなたの「主観」により適宜抜粋された断片的なログなので、これではまともな解析は出来ません。
    先の返信でも記しましたが、この問題を解決するためには手間を惜しまず、自身のミニフィルタおよび mup 等関連するドライバにどのようなリクエストが渡されているのか、丹念に確認する必要があります。

    トレース ログから状態を確認したいのであれば、最低限下記手順でログ ファイルを採取する必要があると思います。
    -------------------------
    <ログの採取手順>

    [前提条件]
    ☆ ミニフィルタ ドライバからのログ出力
    ミニフィルタ ドライバからのログ出力は、ブレークポイント設定ではなく、ドライバ内部から DbgPrint() でログを吐かせるようにしてください。
    (その方が、はるかに実行速度が速くなる。)
    それと、デバッガ上で mup ドライバ等へのブレークポイント設定を行うタイミングを確保するため、DriverEntry ルーチン内に DbgBreakPoint() コールを追加し、ミニフィルタがロードされた直後からログを採取出来るようにしてください。
    あと、ミニフィルタ ドライバの全ての IRP の PreOperation ルーチンで、FileObject が渡されて来ているかをチェックし、FileObject が NULL ではなく、かつ FileName メンバにパス名が渡されてきている場合は、DbgPrint() でパス名を出力させてください。
    (該当パス名に対するブロックの有無、IRP の MajorFunction, MinorFunction、FileObject の FsContext, FsContext2 の値も一緒に出力させておく。)

    [採取手順]
    1. ログ ファイルのオープン
    ターゲット PC の電源投入後、ミニフィルタ ドライバの DriverEntry ルーチンに仕掛けた DbgBreakPoint() で WinDbg にブレークインしたら、下記コマンドでログ ファイルをオープンしてください。

    .logopen "C:\Users\<Logon Account Name>\PassThrough_00.log"


    2. 関連ドライバへのブレークポイント設定
    mup 等関連ドライバへのブレークポイントを設定してください。
    (mup!MupCreate 等のリターン値を確認したいので、このまま変更せずに、WinDbg へそのままコピペしてください。)

    bu mup!MupCreate "r @$t19=@rcx; r @$t18=@rdx; bp @$ra \"bc 5 6 7; .echo -----------------------; .echo [!!!!! mup!MupCreate Result !!!!!]; !thread; .echo [DeviceStack]; !devstack @$t19; .echo [IRP]; r @$t18; .echo [Result]; r @rax; dt nt!_IRP @$t18 IoStatus.; g\"; .echo -----------------------; !thread; .echo [Registers]; r; .echo [DeviceObject]; !devobj @rcx; .echo [IRP]; !irp @rdx; r @$t0=poi(@rdx+0x078+0x040); .echo [IO_STACK_LOCATION]; dt nt!_IO_STACK_LOCATION @$t0; r @$t1=poi(@$t0+0x28); r @$t2=poi(@$t0+0x30); .echo [DeviceStack]; !devstack @$t1; .echo [FileObject]; !fileobj @$t2; g"
    
    bu mup!MupFastIoQueryOpen "r @$t19=@rcx; r @$t18=@rdx; r @$t17=@r8; r @$t16=poi(@$t19+0x078+0x040); r @$t15=poi(@$t16+0x30); bp @$ra \"bc 5 6 7; .echo -----------------------; .echo [!!!!! mup!MupFastIoQueryOpen Result !!!!!]; !thread; .echo [IRP]; r @$t19; .echo [FileObject]; !fileobj @$t15; .echo [FILE_NETWORK_OPEN_INFORMATION]; dt nt!_FILE_NETWORK_OPEN_INFORMATION @$t18; .echo [DeviceStack]; !devstack @$t17; .echo [Result]; r @al; dt nt!_IRP @$t19 IoStatus.; g\"; .echo -----------------------; !thread; .echo [Registers]; r; .echo [IRP]; !irp @rcx; r @$t0=poi(@rcx+0x078+0x040); .echo [IO_STACK_LOCATION]; dt nt!_IO_STACK_LOCATION @$t0; r @$t1=poi(@$t0+0x28); r @$t2=poi(@$t0+0x30); .echo [DeviceStack]; !devstack @$t1; .echo [FileObject]; !fileobj @$t2; .echo [FILE_NETWORK_OPEN_INFORMATION]; dt nt!_FILE_NETWORK_OPEN_INFORMATION @rdx; .echo [DeviceObject]; !devobj @r8; g"
    
    bu mup!MupFastIoQueryNetworkOpenInfo "r @$t19=@rcx; r @$t18=@r8; r @$t17=@r9; r @$t16=poi(@rsp+0x28); bp @$ra \"bc 5 6 7; .echo -----------------------; .echo [!!!!! mup!MupFastIoQueryNetworkOpenInfo Result !!!!!]; !thread; .echo [FileObject]; !fileobj @$t19; .echo [FILE_NETWORK_OPEN_INFORMATION]; dt nt!_FILE_NETWORK_OPEN_INFORMATION @$t18; .echo [DeviceStack]; !devstack @$t16; .echo [Result]; r @al; dt nt!_IO_STATUS_BLOCK @$t17; g\"; .echo -----------------------; !thread; .echo [Registers]; r; .echo [FileObject]; !fileobj @rcx; .echo [Wait]; r @rdx; .echo [FILE_NETWORK_OPEN_INFORMATION]; dt nt!_FILE_NETWORK_OPEN_INFORMATION @r8; .echo [IO_STATUS_BLOCK]; r @r9; dt nt!_IO_STATUS_BLOCK @r9; .echo [DeviceObject]; r @$t0=poi(@rsp+0x28); !devobj @$t0; !devstack @$t0; g"
    
    bu rdpdr!DrPeekDispatch ".echo -----------------------; !thread; .echo [Registers]; r; .echo [DeviceObject]; !devobj @rcx; .echo [IRP]; !irp @rdx; r @$t1=poi(@rdx+0x078+0x040); .echo [IO_STACK_LOCATION]; dt nt!_IO_STACK_LOCATION @$t1; r @$t2=poi(@$t1+0x28); r @$t3=poi(@$t1+0x30); .echo [DeviceStack]; !devstack @$t2; .echo [FileObject]; !fileobj @$t3; g"
    
    bu csc!CscFsdDispatch ".echo -----------------------; !thread; .echo [Registers]; r; .echo [DeviceObject]; !devobj @rcx; .echo [IRP]; !irp @rdx; r @$t1=poi(@rdx+0x078+0x040); .echo [IO_STACK_LOCATION]; dt nt!_IO_STACK_LOCATION @$t1; r @$t2=poi(@$t1+0x28); r @$t3=poi(@$t1+0x30); .echo [DeviceStack]; !devstack @$t2; .echo [FileObject]; !fileobj @$t3; g"

    3. 問題現象の再現
    問題現象を再現させ、必要なログ情報をデバッガに吐かせてください。

    4. ログ ファイルのクローズ
    問題現象の再現を確認し、必要なログ情報を採取したら、下記コマンドでログ ファイルをクローズしてください。

    .logclose

    -------------------------

    上記手順にログ ファイルを採取したら生成したログ ファイルを、先に私が利用した「ギガファイル便」等のどこかのオンラインストレージ上にアップロードしてもらえれば、私の方でも確認します。

    追記
    最初に示したブレークポイント設定のコマンドはあんまりよくなかったので、修正しました。




    • 編集済み お馬鹿 2022年6月1日 1:16
    2022年5月31日 8:45
  • お世話になります。

    ご教示いただきましたブレークポイント等を設定し、取得したログを以下にアップロードしました。

    https://xgf.nu/5x0B

    「net use \\192.168.1.10\share」コマンドを実行すると、ユーザーアカウント情報の入力プロンプトが表示され、ユーザー情報を入力すると、「アクセス拒否が拒否されました」と表示されます。

    しかし、ファイルサーバには、SMB2プロトコルのパケットの送受信が行われています。(パケットキャプチャをして確認)

    どのようにすれば、通信を止めることがきるか、アドバイスを頂けましたら幸いです。

    以上、よろしくお願いいたします。

    2022年6月7日 4:34
  • ちゃんと状況を説明してもらわないと、返信のしよがありません。
    (きちんと自身の状況説明することは、最低限のマナーでは?)

    Explorer 等からの "\\192.168.1.10\share" フォルダ/ファイル アクセスは、すべてブロックは出来るようになったのですか?

    その上で。。。。
    現在あなたがやろうとしていることは、ファイル システム レベルでのアクセス制御です。
    そしてあなたがパケットキャプチャで確認したのは、ネットワーク プロトコル レベルでのアクセスです。
    やっていることと確認している部分のレイヤーが、全くかみ合っていません。
    パケット レベルでの制御をしたいのであれば、NDIS 等のネットワーク プロトコル レベルのフィルタ ドライバを開発するべきです。
    --------------------
    Network Driver Design Guide
    https://docs.microsoft.com/en-us/windows-hardware/drivers/network/
    --------------------
    2022年6月7日 5:53
  • ご返信いただき、ありがとうございます。

    > ちゃんと状況を説明してもらわないと、返信のしよがありません。
    > (きちんと自身の状況説明することは、最低限のマナーでは?)

    僭越ではございますが、これまでの投稿させていただいてます経緯から
    ご理解いただけるものと思っていました。

    これまで、ご返信いただいていますが、上記のような質問者を罵倒するような文言が
    多々ございますが、このような表現はいかがなものでしょうか。

    他の皆様も、分からず困っているためフォーラムで質問をしていると思います。
    確かに中には、何もご自身で調べることなく、質問される方もいらっしゃことは事実ですが。。。

    改めまして、今回ログを取得した方法について、ご説明させていただきます。

    ご教示いただきましたとおり、ブレークポイントを設定した後、
    コマンドプロンプトから「net  use \\192.168.1.10\share」を実行して、取得したログになります。

    IRP_MJ_CREATE、IRP_MJ_CREATE_NAMED_PIPE、IRP_MJ_QUERY_VOLUME_INFORMATION、
    IRP_MJ_FILE_SYSTEM_CONTROL、IRP_MJ_CREATE_MAILSLOTの操作前コールバックでは、
    パス名に「192.168.1.10」が含まれている場合
    以下のコードを実行し、コールバック関数から抜けています。

    Data->IoStatus.Status = STATUS_ACCESS_DENIED;
    Data->IoStatus.Information = 0;
    return FLT_PREOPE_COMPLETE;

    また、IRP_MJ_NETWORK_QUERY_OPEN(FAST I/O)では、パス名に「192.168.1.10」が含まれている場合
    以下のコードを実行し、コールバック関数から抜けています。

    return FLT_PREOP_DISALLOW_FASTIO;

    以上が説明となります。その他、過不足がございましたら、ご連絡いただければ幸いです。

    > 現在あなたがやろうとしていることは、ファイル システム レベルでのアクセス制御です。
    > そしてあなたがパケットキャプチャで確認したのは、ネットワーク プロトコル レベルでのアクセスです。
    > やっていることと確認している部分のレイヤーが、全くかみ合っていません。
    > パケット レベルでの制御をしたいのであれば、NDIS 等のネットワーク プロトコル レベルのフィルタ ドライバを開発するべきです。

    パケットキャプチャは、実際にミニフィルターでファイルサーバへのアクセスがブロックされているかを確認することを目的に
    実施しています。

    過去にMSDNフォーラムにて、ミニフィルターを使用して、ファイルサーバ(リモートファイル)へのアクセスについても
    ブロックできるかどうかについて、ごご質問をしたところ、
    Windowsでは、リモートファイルへのアクセスを含む、すべてのファイルへのアクセスは、I/Oマネージャーを通して、フィルターマネジャー ⇒ ファイルシステムドライバーへとアクセス要求が行われるため、制御可能とご教示いただいております。
    このため、ファイルシステム・ミニフィルタードライバーで、どのようにすれば、ブロックできるかについて
    ご質問させていただいた次第です。

    ネットワークリダイレクタードライバーがどのように関係しているかについては、よく理解できておらず、苦慮している点です。
    ネットワークリダイレクターにて、初めに該当するドライバー等にリダイレクトされ、フィルターマネージャーを通らないのであれば、ミニフィルターでは、コントロールできませんので。

    また、あるIPアドレス宛てのパケットをブロックするのであれば、NDIS等のネットワーク プロトコル レベルの
    フィルタドライバを使用してできることは概ね把握しています。

    実現したいことですが、「特定のプロセス」が「特定のアカウント権限」で、特定のファイルサーバ上に存在する
    ファイル(リモートファイル)へのアクセスをブロックしたいと考えています。

    この目的と実現するにあたり、ネットワークプロトコルレベルのフィルタドライバーを使用しなければできない場合は、

    その旨、ご教示いただけましたら幸いです。

    以上、よろしくお願いいたします

    2022年6月7日 9:00
  • > 僭越ではございますが、
    > これまでの投稿させていただいてます経緯から
    > ご理解いただけるものと思っていました。
    > これまで、ご返信いただいていますが、
    > 上記のような質問者を罵倒するような文言が
    > 多々ございますが、このような表現はいかがなものでしょうか。

    名前の通り頭が悪いので、あなたの考えていることが私には理解できませんでした。
    私の理解では、すべてのネットワーク I/O がファイル システムを基点として発生する訳ではないので、ネットワーク モニタ上で SMB パケットが出現しても、別段不思議ではないという理解です。
    なので、ファイル システム フィルタ ドライバの開発で、なぜネットワーク モニタでのキャプチャ ログの話が出て来たのか理解できなかったので、説明を求めたまでです。
    例えばネットワーク モニタ上で SMB パケットが検出されたのであれば、そのパケットの送受信を行っているのは何のプロセスで、そのパケット処理を行っているスレッドでどのようなコール スタックが観察されたのか等、詳細情報が分からなければ、その SMB パケットがユーザーからのファイル アクセスに基づいたリクエストなのか判断できないと、私は考えています。
    それを確認するための返信が「罵倒するような文言」というのであれば、私としてはこれ以上返信することはありません。
    2022年6月7日 9:43
  • ご返信いただき、ありがとうございます。

    > 私の理解では、すべてのネットワーク I/O がファイル システムを基点として発生する訳ではないので、
    > ネットワーク モニタ上で SMB パケットが出現しても、別段不思議ではないという理解です。

    マイクロソフト社によるドキュメントでは、リモートファイルへのアクセスについても、ローカルファイルへのアクセスと同様に透過的に実現する旨の記載があります。また、ネットワークリダイレクタードライバは、ファイルシステムドライバーに分類されると読み取れる記載もあります。
    このため、I/Oマネージャを経由して、ファイルシステムに至るのであれば、
    この間にあるフィルターマネージャー(ミニフィルタードライバー)で制御できるのではと考え
    思考作業を実施していました。

    > SMB パケットがユーザーからのファイル アクセスに基づいたリクエストなのか判断できないと、私は考えています。

    パケットキャプチャログのSMB2プロトコルシーケンスを確認すると、「net use \\192.168.1.10\share」コマンドを実行した際に入力したユーザー情報で認証が行われていることが確認することができますので、間違いなくnet useコマンドの実行に発生しています。

    また、取得したパケットは、コマンドを実行した時点で取得されたものです。(パケットキャプチャソフトのフィルタ機能を使用)

    従いまして、パケットを生成しているプロセスは、間違いなくnet useコマンドということは分かっています。

    お送りしましたWinDbgログは、参照いただいてますでしょうか。

    マイクロソフト社様より提供されているPassThroughサンプルコードをベースに、IRPを確認しましたが、passthroughミニフィルターの前に、MUP!Createによるブレークが発生していますので、ミニフィルタードライバーでは制御できないかもしれません。

    これまで、どうもありがとうございました。

    ご教示いただきました内容を手掛かりに、どのようにすれば良いか調べたいと思います。

    2022年6月7日 11:16
  • > お送りしましたWinDbgログは、参照いただいてますでしょうか。

    ログを確認したからこそあの返信に至った。。。という発想には至らなかったようで、結局私が一生懸命書いた返信の趣旨もご理解いただけてなかったことが、やっと理解できました。
    2022年6月7日 23:47