欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    輯:Aeneas 好困

    【新智元導讀】史上最大規模TI故障,已經為財富500強帶來了54億美元損失,甚至導致一位83歲老人失蹤至今未歸。如今,微軟終于給出了一份詳盡的分析報告。


    7月19日那場震驚全球的「史上最大規模IT故障」,影響還在繼續……

    25日,情況最為嚴重、持續時間也最長的航司——達美航空,終于完成了系統修復,恢復正常運營。期間,共有2500多個航班被迫取消。

    27日,美國奧蘭多警察局發布尋人啟事稱,一名83歲男子在因CrowdStrike宕機導致回家航班被取消后,已經失蹤一周了。

    根據分析和保險服務商Parametrix的計算,這次宕機事件給財富500強企業帶來了高達54億美元的損失。

    而這種搞崩全球設備的操作,可以算是CrowdStrike家的傳統藝能了。

    首席執行官George Kurtz早在2010年的Windows XP時代,就曾在McAfee用一個更新搞崩了全球設備;跟CEO的作風類似的,CrowdStrike在過去的四個月里,差不多每30天就要搞垮一個操作系統!

    終于,在7月27日,微軟針對這次CrowdStrike導致的全球藍屏事件,給出了一份官方的分析。

    「Windows安全工具的集成與管理最佳實踐」

    而看完報告之后,網友紛紛開啟了嘲諷模式:

    「難道CrowdStrike的高層領導都睡著了?為什么連續幾個月來每30天都會發生這么多事件?」

    「微軟已經在言辭上盡可能地保持委婉了,但這絕對是對CrowdStrike的一記耳光!」

    CrowdStrike不知道如何展開工作,并且需要基本的質量保證(QA)實踐指導,我們很樂意教他們……

    接著,便列出了一堆在用戶模式下運行的功能,告訴他們如何避免需要在內核模式下運行太多東西。

    有人表示,自己在微軟工作的朋友對此深表不滿,每次有類似的宕機事件,微軟都得背黑鍋。

    「接口之所以這樣設計,是因為不在內核模式下進行,就很難在實時文件系統過濾中獲得足夠的性能。這是困擾很多操作系統的難題。」

    實際上,微軟允許第三方代碼加載到自己的內核,跟其他的主要操作系統內核(Linux或Apple XNU之類)并沒什么不同。

    這次的問題主要是,CrowdStrike在內核模式下做了很多本可以在用戶模式下完成的事情。

    接下來,就讓我們看看,微軟官方對于宕機事件的詳細分析。

    CrowdStrike事件分析


    在博客中,微軟解釋了為什么現在的安全產品,必須使用內核模式驅動程序。

    為此,Windows也為第三方解決方案提供了安全措施。

    報告中,CrowdStrike將原因歸根為內存安全問題,特別是CSagent驅動程序中的越界讀取訪問違規

    對于CrowdStrike給出的解釋,微軟利用Microsoft WinDBG內核調試器和任何人都可免費誰用的幾個擴展,來執行了如下分析。

    基于Microsoft對與該事件相關的Windows錯誤報告(WER)內核崩潰轉儲的分析,可以觀察到反映這一點的全球崩潰模式:

    FAULTING_THREAD:  ffffe402fe868040
    
    
    READ_ADDRESS:  ffff840500000074 Paged pool
    
    
    MM_INTERNAL_CODE:  2
    
    
    IMAGE_NAME:  csagent.sys
    
    
    MODULE_NAME: csagent
    
    
    FAULTING_MODULE: fffff80671430000 csagent
    
    
    PROCESS_NAME:  System
    
    
    TRAP_FRAME:  ffff94058305ec20 -- (.trap 0xffff94058305ec20)
    .trap 0xffff94058305ec20
    NOTE: The trap frame does not contain all registers.
    Some register values may be zeroed or incorrect.
    rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003
    rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000
    rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0
     r8=ffff840500000074  r9=0000000000000000 r10=0000000000000000
    r11=0000000000000014 r12=0000000000000000 r13=0000000000000000
    r14=0000000000000000 r15=0000000000000000
    iopl=0         nv up ei ng nz na po nc
    csagent+0xe14ed:
    fffff806`715114ed 458b08          mov     r9d,dword ptr [r8] ds:ffff8405`00000074=????????
    .trap
    Resetting default scope
    
    
    STACK_TEXT:  
    ffff9405`8305e9f8 fffff806`5388c1e4     : 00000000`00000050 ffff8405`00000074 00000000`00000000 ffff9405`8305ec20 : nt!KeBugCheckEx 
    ffff9405`8305ea00 fffff806`53662d8c     : 00000000`00000000 00000000`00000000 00000000`00000000 ffff8405`00000074 : nt!MiSystemFault+0x1fcf94  
    ffff9405`8305eb00 fffff806`53827529     : ffffffff`00000030 ffff8405`af8351a2 ffff9405`8305f020 ffff9405`8305f020 : nt!MmAccessFault+0x29c 
    ffff9405`8305ec20 fffff806`715114ed     : 00000000`00000000 ffff9405`8305eeb0 ffff8405`b0bcd00c ffff8405`b0bc505c : nt!KiPageFault+0x369 
    ffff9405`8305edb0 fffff806`714e709e     : 00000000`00000000 00000000`e01f008d ffff9405`8305f102 fffff806`716baaf8 : csagent+0xe14ed
    ffff9405`8305ef50 fffff806`714e8335     : 00000000`00000000 00000000`00000010 00000000`00000002 ffff8405`b0bc501c : csagent+0xb709e
    ffff9405`8305f080 fffff806`717220c7     : 00000000`00000000 00000000`00000000 ffff9405`8305f382 00000000`00000000 : csagent+0xb8335
    ffff9405`8305f1b0 fffff806`7171ec44     : ffff9405`8305f668 fffff806`53eac2b0 ffff8405`afad4ac0 00000000`00000003 : csagent+0x2f20c7
    ffff9405`8305f430 fffff806`71497a31     : 00000000`0000303b ffff9405`8305f6f0 ffff8405`afb1d140 ffffe402`ff251098 : csagent+0x2eec44
    ffff9405`8305f5f0 fffff806`71496aee     : ffff8405`afb1d140 fffff806`71541e7e 00000000`000067a0 fffff806`7168f8f0 : csagent+0x67a31
    ffff9405`8305f760 fffff806`7149685b     : ffff9405`8305f9d8 ffff8405`afb1d230 ffff8405`afb1d140 ffffe402`fe8644f8 : csagent+0x66aee
    ffff9405`8305f7d0 fffff806`715399ea     : 00000000`4a8415aa ffff8eee`1c68ca4f 00000000`00000000 ffff8405`9e95fc30 : csagent+0x6685b
    ffff9405`8305f850 fffff806`7148efbb     : 00000000`00000000 ffff9405`8305fa59 ffffe402`fe864050 ffffe402`fede62c0 : csagent+0x1099ea
    ffff9405`8305f980 fffff806`7148edd7     : ffffffff`ffffffa1 fffff806`7152e5c1 ffffe402`fe864050 00000000`00000001 : csagent+0x5efbb
    ffff9405`8305fac0 fffff806`7152e681     : 00000000`00000000 fffff806`53789272 00000000`00000002 ffffe402`fede62c0 : csagent+0x5edd7
    ffff9405`8305faf0 fffff806`53707287     : ffffe402`fe868040 00000000`00000080 fffff806`7152e510 006fe47f`b19bbdff : csagent+0xfe681
    ffff9405`8305fb30 fffff806`5381b8e4     : ffff9680`37651180 ffffe402`fe868040 fffff806`53707230 00000000`00000000 : nt!PspSystemThreadStartup+0x57 
    ffff9405`8305fb80 00000000`00000000     : ffff9405`83060000 ffff9405`83059000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x34

    如果深入分析這個崩潰轉儲,就可以恢復訪問違規時的堆棧幀,從而了解更多起因了。

    然而不幸的是,由于使用WER數據時,微軟只能接收到壓縮狀態,因此就無法反向反匯編,查看崩潰前的更多指令了。

    不過,在反匯編中可以看到,在讀取R8寄存器中指定的地址之前,有一個NULL檢查:

    6: kd> .trap 0xffff94058305ec20
    .trap 0xffff94058305ec20
    NOTE: The trap frame does not contain all registers.
    Some register values may be zeroed or incorrect.
    rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003
    rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000
    rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0
     r8=ffff840500000074  r9=0000000000000000 r10=0000000000000000
    r11=0000000000000014 r12=0000000000000000 r13=0000000000000000
    r14=0000000000000000 r15=000000000000
    000
    iopl=0         nv up ei ng nz na po nc
    csagent+0xe14ed:
    fffff806`715114ed 458b08          mov     r9d,dword ptr [r8] ds:ffff8405`00000074=????????
    6: kd> !pte ffff840500000074
    !pte ffff840500000074
                                               VA ffff840500000074
    PXE at FFFFABD5EAF57840    PPE at FFFFABD5EAF080A0    PDE at FFFFABD5E1014000    PTE at FFFFABC202800000
    contains 0A00000277200863  contains 0000000000000000
    pfn 277200    ---DA--KWEV  contains 0000000000000000
    not valid
    
    
    6: kd> ub fffff806`715114ed
    ub fffff806`715114ed
    csagent+0xe14d9:
    fffff806`715114d9 04d8            add     al,0D8h
    fffff806`715114db 750b            jne     csagent+0xe14e8 (fffff806`715114e8)
    fffff806`715114dd 4d85c0          test    r8,r8
    fffff806`715114e0 7412            je      csagent+0xe14f4 (fffff806`715114f4)
    fffff806`715114e2 450fb708        movzx   r9d,word ptr [r8]
    fffff806`715114e6 eb08            jmp     csagent+0xe14f0 (fffff806`715114f0)
    fffff806`715114e8 4d85c0          test    r8,r8
    fffff806`715114eb 7407            je      csagent+0xe14f4 (fffff806`715114f4)
    6: kd> ub fffff806`715114d9
    ub fffff806`715114d9
                              ^ Unable to find valid previous instruction for 'ub fffff806`715114d9'
    6: kd> u fffff806`715114eb
    u fffff806`715114eb
    csagent+0xe14eb:
    fffff806`715114eb 7407            je      csagent+0xe14f4 (fffff806`715114f4)
    fffff806`715114ed 458b08          mov     r9d,dword ptr [r8]
    fffff806`715114f0 4d8b5008        mov     r10,qword ptr [r8+8]
    fffff806`715114f4 4d8bc2          mov     r8,r10
    fffff806`715114f7 488d4d90        lea     rcx,[rbp-70h]
    fffff806`715114fb 488bd6          mov     rdx,rsi
    fffff806`715114fe e8212c0000      call    csagent+0xe4124 (fffff806`71514124)
    fffff806`71511503 4533d2          xor     r10d,r10d
    
    
    6: kd> db ffff840500000074
    db ffff840500000074
    ffff8405`00000074  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`00000084  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`00000094  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`000000a4  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`000000b4  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`000000c4  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`000000d4  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????
    ffff8405`000000e4  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ????????????????

    觀察以上結果,就可以證實CrowdStrike的分析是正確的——

    在CrowdStrike開發的CSagent.sys驅動程序中,存在越界讀取內存安全錯誤。

    另外,微軟還發現,csagent.sys模塊被注冊為文件系統過濾驅動程序——通常被反惡意軟件用來接收與文件操作有關的通知。

    安全軟件會用它來掃描保存到磁盤的任何新文件,比如通過瀏覽器下載的文件。

    typedef union _FLT_PARAMETERS {
      ...    ;
      struct {
        PIO_SECURITY_CONTEXT     SecurityContext;
        ULONG                    Options;
        USHORT POINTER_ALIGNMENT Reserved;
        USHORT                   ShareAccess;
        PVOID                    Parameters;
      } CreatePipe;
      ...    ;
    } FLT_PARAMETERS, *PFLT_PARAMETERS;

    而且,文件系統過濾器還可以作為監控系統行為的安全解決方案的信號。

    正如CrowdStrike在博客中指出,他們內容更新的一部分,就是更改傳感器邏輯,以處理與命名管道創建相關的數據。

    而文件系統過濾驅動程序API,允許驅動程序在系統上發生命名管道活動時接收調用,從而能夠檢測惡意行為。

    這種驅動程序的一般功能,是與CrowdStrike分享的信息相關聯的。

    6: kd>!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent
    
    
    Hive         ffff84059ca7b000
    KeyNode      ffff8405a6f67f9c
    
    
    [SubKeyAddr]         [SubKeyName]
    ffff8405a6f683ac     Instances
    ffff8405a6f6854c     Sim
    
    
     Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details
    
    
    [ValueType]         [ValueName]                   [ValueData]
    REG_DWORD           Type                          2
    REG_DWORD           Start                         1
    REG_DWORD           ErrorControl                  1
    REG_EXPAND_SZ       ImagePath                     \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sys
    REG_SZ              DisplayName                   CrowdStrike Falcon
    REG_SZ              Group                         FSFilter Activity Monitor
    REG_MULTI_SZ        DependOnService               FltMgr\0
    REG_SZ              CNFG                          Config.sys
    REG_DWORD           SupportedFeatures             f

    可以看到,在CrowdStrike分析中指定的控制通道文件版本291也出現在了崩潰中,這表明文件已被讀取。

    如何確定文件本身與崩潰轉儲中觀察到的訪問違規相關聯呢?這就需要使用這些工具對驅動程序進行額外的調試了。(這次咱不討論)

    !ca ffffde8a870a8290
    
    
    ControlArea  @ ffffde8a870a8290
      Segment      ffff880ce0689c10  Flink      ffffde8a87267718  Blink        ffffde8a870a7d98
      Section Ref                 0  Pfn Ref                   b  Mapped Views                0
      User Ref                    0  WaitForDel                0  Flush Count                 0
      File Object  ffffde8a879b29a0  ModWriteCount             0  System Views                0
      WritableRefs                0  PartitionId                0  
      Flags (8008080) File WasPurged OnUnusedList 
    
    
          \Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys
    
    
    1: kd> !ntfskd.ccb ffff880ce06f6970
    !ntfskd.ccb ffff880ce06f6970
    
    
       Ccb: ffff880c`e06f6970
     Flags: 00008003 Cleanup OpenAsFile IgnoreCase
    Flags2: 00000841 OpenComplete AccessAffectsOplocks SegmentObjectReferenced
      Type: UserFileOpen
    FileObj: ffffde8a879b29a0
    
    
    (018)  ffff880c`db937370  FullFileName [\Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys]
    (020) 000000000000004C  LastFileNameOffset 
    (022) 0000000000000000  EaModificationCount 
    (024) 0000000000000000  NextEaOffset 
    (048) FFFF880CE06F69F8  Lcb 
    (058) 0000000000000002  TypeOfOpen

    我們可以做的,是通過崩潰轉儲,來確定在崩潰發生時,運行的系統上是否存在其他由CrowdStrike提供的驅動程序。

    6: kd> lmDvmCSFirmwareAnalysis
    lmDvmCSFirmwareAnalysis
    Browse full module list
    start             end                 module name
    fffff806`58920000 fffff806`5893c000   CSFirmwareAnalysis   (deferred)             
        Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys
        Image name: CSFirmwareAnalysis.sys
        Browse all global symbols  functions  data  Symbol Reload
        Timestamp:        Mon Mar 18 11:32:14 2024 (65F888AE)
        CheckSum:         0002020E
        ImageSize:        0001C000
        Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
        Information from resource tables:
    6: kd> lmDvmcspcm4
    lmDvmcspcm4
    Browse full module list
    start             end                 module name
    fffff806`71870000 fffff806`7187d000   cspcm4     (deferred)             
        Image path: \??\C:\Windows\system32\drivers\CrowdStrike\cspcm4.sys
        Image name: cspcm4.sys
        Browse all global symbols  functions  data  Symbol Reload
        Timestamp:        Mon Jul  8 18:33:22 2024 (668C9362)
        CheckSum:         00012F69
        ImageSize:        0000D000
        Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
        Information from resource tables:
    6: kd> lmDvmcsboot.sys
    lmDvmcsboot.sys
    Browse full module list
    start             end                 module name
    
    
    Unloaded modules:
    fffff806`587d0000 fffff806`587dc000   CSBoot.sys
        Timestamp: unavailable (00000000)
        Checksum:  00000000
        ImageSize:  0000C000
    
    
    6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csboot
    !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csboot
    
    
    Hive         ffff84059ca7b000
    KeyNode      ffff8405a6f68924
    
    
    [ValueType]         [ValueName]                   [ValueData]
    REG_DWORD           Type                          1
    REG_DWORD           Start                         0
    REG_DWORD           ErrorControl                  1
    REG_EXPAND_SZ       ImagePath                     system32\drivers\CrowdStrike\CSBoot.sys
    REG_SZ              DisplayName                   CrowdStrike Falcon Sensor Boot Driver
    REG_SZ              Group                         Early-Launch
    6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrol
    !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrol
    
    
    Hive         ffff84059ca7b000
    KeyNode      ffff8405a6f694ac
    
    
    [SubKeyAddr]         [VolatileSubKeyName]
    ffff84059ce196c4     Enum
    
    
     Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details
    
    
    [ValueType]         [ValueName]                   [ValueData]
    REG_DWORD           Type                          1
    REG_DWORD           Start                         3
    REG_DWORD           ErrorControl                  1
    REG_DWORD           Tag                           1f
    REG_EXPAND_SZ       ImagePath                     \SystemRoot\System32\drivers\CSDeviceControl.sys
    REG_SZ              DisplayName                   @oem40.inf,%DeviceControl.SVCDESC%;CrowdStrike Device Control Service
    REG_SZ              Group                         Base
    REG_MULTI_SZ        Owners                        oem40.inf\0!csdevicecontrol.inf_amd64_b6725a84d4688d5a\0!csdevicecontrol.inf_amd64_016e965488e83578\0
    REG_DWORD           BootFlags                     14
    6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent
    !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent
    
    
    Hive         ffff84059ca7b000
    KeyNode      ffff8405a6f67f9c
    
    
    [SubKeyAddr]         [SubKeyName]
    ffff8405a6f683ac     Instances
    ffff8405a6f6854c     Sim
    
    
     Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details
    
    
    [ValueType]         [ValueName]                   [ValueData]
    REG_DWORD           Type                          2
    REG_DWORD           Start                         1
    REG_DWORD           ErrorControl                  1
    REG_EXPAND_SZ       ImagePath                     \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sys
    REG_SZ              DisplayName                   CrowdStrike Falcon
    REG_SZ              Group                         FSFilter Activity Monitor
    REG_MULTI_SZ        DependOnService               FltMgr\0
    REG_SZ              CNFG                          Config.sys
    REG_DWORD           SupportedFeatures             f
    
    
    6: kd> lmDvmCSFirmwareAnalysis
    lmDvmCSFirmwareAnalysis
    Browse full module list
    start             end                 module name
    fffff806`58920000 fffff806`5893c000   CSFirmwareAnalysis   (deferred)             
        Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys
        Image name: CSFirmwareAnalysis.sys
        Browse all global symbols  functions  data  Symbol Reload
        Timestamp:        Mon Mar 18 11:32:14 2024 (65F888AE)
        CheckSum:         0002020E
        ImageSize:        0001C000
        Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
        Information from resource tables:
    6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysis
    !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysis
    
    
    Hive         ffff84059ca7b000
    KeyNode      ffff8405a6f69d9c
    
    
    [SubKeyAddr]         [VolatileSubKeyName]
    ffff84059ce197cc     Enum
    
    
     Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details
    
    
    [ValueType]         [ValueName]                   [ValueData]
    REG_DWORD           Type                          1
    REG_DWORD           Start                         0
    REG_DWORD           ErrorControl                  1
    REG_DWORD           Tag                           6
    REG_EXPAND_SZ       ImagePath                     system32\DRIVERS\CSFirmwareAnalysis.sys
    REG_SZ              DisplayName                   @oem43.inf,%FirmwareAnalysis.SVCDESC%;CrowdStrike Firmware Analysis Service
    REG_SZ              Group                         Boot Bus Extender
    REG_MULTI_SZ        Owners                        oem43.inf\0!csfirmwareanalysis.inf_amd64_12861fc608fb1440\0
    6: kd> !reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch
    !reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch

    從上述分析中可見,CrowdStrike加載了四個驅動程序模塊。

    其中一個模塊根據CrowdStrike的初步事件后審查時間線,會頻繁接收動態控制和內容更新。

    利用此次崩潰的獨特堆棧和屬性,便可以識別出由CrowdStrike特定編程錯誤導致的Windows崩潰報告。

    圖1 CrowdStrike驅動程序相關的崩潰轉儲報告隨時間的變化(僅包括選擇上傳的用戶)

    總之,這次全球宕機事件告訴我們:任何無效內存訪問之類的可靠性問題,如果沒有結合安全部署實踐,都會導致嚴重的后果。

    所以,為什么安全解決方案必須在Windows上使用內核驅動程序呢?

    對此,微軟給出了以下解釋。

    為什么安全解決方案,必須依賴內核驅動程序


    首先最重要的一點原因,就是內核驅動程序允許系統范圍的可見性。

    而且,它能在早起啟動時運行,這樣就能檢測出像啟動工具包和根工具包這樣的威脅(要知道,后者可是在用戶模式應用程序加載前,就可以運行的)。

    微軟為內核驅動程序提供了一套豐富的功能,包括用于進程和線程創建的系統事件回調,以及可以監控文件創建、刪除或修改的過濾驅動程序。

    而且,內核活動還可以觸發回調,讓驅動程序決定何時阻止文件或創建進程。

    因此,許多供應商都是用NDIS驅動,在內核中使用驅動程序來收集各種網絡信息。

    性能

    內核驅動程序,還會帶來潛在的性能優勢。

    比如,它可以幫助進行高吞吐量的網絡活動分析或數據收集。

    當然,有許多場景可以在非內核模式下優化數據收集和分析操作,微軟也會繼續與生態系統合作。

    防篡改能力

    加載到內核模式的另一個好處,就是防篡改能力。

    即使攻擊者具有管理員權限,安全產品也不希望軟件被惡意軟件、針對性攻擊或惡意的內部人員擊潰。

    另一個要求,就是讓驅動程序盡早加載,以便盡早觀察到系統事件。

    為此,微軟提供了一種機制,可以在啟動過程的早期,啟動標記為早期啟動反惡意軟件(ELAM)的驅動程序。

    內核驅動程序提供了以上好處,但是是以彈性為代價的。

    因此,安全供應商在使用內核驅動程序時,就必須仔細權衡利弊,平衡可見性和防篡改需求,與在內核模式下操作的風險。

    微軟表示,如今安全工具已經可以在安全性和可靠性之間實現平衡。

    例如,安全供應商可以使用在內核模式下運行的最小傳感器進行數據收集和執行,以限制暴露于可用性問題的風險。

    其余的關鍵產品功能則在用戶模式下隔離進行,然后再恢復。

    圖2 平衡安全性和可靠性的示例安全產品架構

    而對于用戶模型保護方法,Windows也同樣提供了幾種防篡改的方法,比如基于虛擬化的安全(VBS)隔離區和受保護進程,以及ETW事件和用戶模式接口,如反惡意軟件掃描接口。

    如何在更高安全模式下進行部署


    微軟表示,Windows本質上是一個開放、多功能的操作系統,可以通過集成工具輕松鎖定,以提高安全性。

    此外,Windows也在不斷增加安全默認值,包括在Windows 11中默認啟用的數十個新的安全功能。

    在Windows的自我防御方面,默認啟用的關鍵反惡意軟件功能包括:

    1. 安全啟動(Secure Boot):通過在系統啟動過程中強制執行簽名一致性,防止早期啟動惡意軟件和rootkit
    2. 測量啟動(Measured Boot):通過集成的證明服務(如設備健康證明)提供基于TPM的硬件加密測量,以檢測啟動時的屬性。
    3. 內存完整性(Memory integrity,也稱HVCI):防止在內核中運行時生成動態代碼,確保控制流完整性
    4. 易受攻擊驅動程序阻止列表:集成在操作系統中并由微軟管理,與惡意驅動程序黑名單相輔相成
    5. 受保護的本地安全機構(Protected Local Security Authority):負責保護一系列憑據,企業版默認開啟基于硬件的憑據保護
    6. Microsoft Defender Antivirus:在整個操作系統中提供反惡意軟件保護

    利用Windows集成的安全功能來防止攻擊,可以提高安全性,同時減少成本和復雜性。可參考的最佳實踐如下:

    1. 通過App Control for Business來編寫一個安全策略,只允許受信任和/或業務關鍵的應用程序
    2. 結合內存完整性(Memory integrity)與特定的允許列表策略,利用基于虛擬化的安全性(VBS)進一步保護Windows內核
    3. 以標準用戶身份運行,并僅在必要時提升權限
    4. 使用設備健康證明(Device Health Attestation, DHA)監控設備的正確安全策略,包括硬件基礎的機器安全姿態測量

    為反惡意軟件生態提供最佳實踐


    最后,微軟計劃利用新推出的數十種安全功能和架構改進,來幫助反惡意軟件完成方法的現代化,從而提升安全性和可靠性:

    1. 提供安全部署指南、最佳實踐和技術,使執行安全產品更新更安全
    2. 減少內核驅動程序訪問重要安全數據的需求
    3. 提供增強的隔離和防篡改能力,如VBS enclaves技術
    4. 啟用零信任方法,如高完整性證明

    微軟表示,Windows今后將繼續創新并提供新的方法,使安全工具能夠安全地檢測和響應新興威脅。

    翻譯:維一零

    預估稿費:260RMB(不服你也來投稿啊!)

    投稿方式:發送郵件至linwei#360.cn,或登陸網頁版在線投稿

    前言


    你好,歡迎回到Windows漏洞利用開發系列教程的第16部分。今天我們將使用@HackSysTeam有漏洞的驅動來進行內存池溢出利用。我再次強烈地建議讀者在進入這篇文章之前去回顧下面列出的資源,另外關于內存池分配的更多背景知識請見第15部分。關于調試環境的設置細節可以從第10部分找到。

    資源


    HackSysExtremeVulnerableDriver(@HackSysTeam)

    HackSysTeam-PSKernelPwn(@FuzzySec)

    Windows 7內核池利用(@kernelpool)

    理解內存池破壞第1部分(MSDN)

    理解內存池破壞第2部分(MSDN)

    理解內存池破壞第3部分(MSDN)

    偵察挑戰


    讓我們帶著問題看一下漏洞函數的一部分(在這里)。

    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556NTSTATUS TriggerPoolOverflow(IN PVOID UserBuffer, IN SIZE_T Size) { PVOID KernelBuffer=NULL; NTSTATUS Status=STATUS_SUCCESS; PAGED_CODE(); __try { DbgPrint("[+] Allocating Pool chunk\n"); // 分配內存塊 KernelBuffer=ExAllocatePoolWithTag(NonPagedPool, (SIZE_T)POOL_BUFFER_SIZE, (ULONG)POOL_TAG); if (!KernelBuffer) { // 無法分配內存塊 DbgPrint("[-] Unable to allocate Pool chunk\n"); Status=STATUS_NO_MEMORY; return Status; }
網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有