Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
SharpWnfSuite — विंडोज़ नोटिफिकेशन सुविधा के लिए C# यूटिलिटीज़ | Kitploit
उपकरण/GitHubGitHub/daem0nc0re/sharpwnfsuite
टोहीभेद्यता विश्लेषणशोषणजानकारी एकत्र करनापोस्ट-शोषणउपयोगिताएँ और फ्रेमवर्क
GitHubdaem0nc0re/sharpwnfsuite

SharpWnfSuite

विंडोज़ नोटिफिकेशन सुविधा के लिए C# यूटिलिटीज़

रिपॉजिटरी देखें
1582861 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

SharpWnfSuite

यह Windows Notification Facility (WNF) टूल्स के लिए रिपॉज़िटरी है। वर्तमान में, Alex Ionescu (@aionescu) और Gabrielle Viala (@pwissenlit) द्वारा विकसित wnfun में टूल्स का C# पोर्ट अपलोड किया गया है। जब मैं Windows Notification Facility के लिए अतिरिक्त टूल्स विकसित करूँगा, तो वे यहाँ अपलोड किए जाएँगे।

विषय-सूची

  • SharpWnfSuite
    • उपयोग
      • SharpWnfDump
      • SharpWnfNameDumper
      • SharpWnfClient
      • SharpWnfServer
      • SharpWnfScan
      • SharpWnfInject
    • KernelPrimitive
    • WnfCallbackPayload
    • संदर्भ
    • आभार

उपयोग

SharpWnfDump

वापस शीर्ष पर

प्रोजेक्ट

यह टूल WNF स्टेट नेम्स के बारे में जानकारी डंप या हेरफेर करता है। wnfdump.exe और WnfDump.py के समकक्ष। मैंने मूल टूल में कुछ अपडेट किए हैं (एक्सेप्शन हैंडलिंग, वेल-नोन स्टेट नेम और नया WNF_DATA_SCOPE सदस्य)।

अपने होस्ट पर सभी वेल-नोन, परमानेंट और पर्सिस्टेंट WNF स्टेट नेम्स की जानकारी प्राप्त करने के लिए, -d (--dump) फ्लैग के साथ निष्पादित करें:``` PS C:\Dev> .\SharpWnfDump.exe -d

| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |

| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 | | WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 | | WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |

--snip--

root@kitploit:~
To show only state name used in system, set `-u` (`--used`) flag.
This flag can be applied to `-d` and `-b` option:

सिस्टम में उपयोग किए गए केवल state नाम दिखाने के लिए, `-u` (`--used`) फ़्लैग सेट करें।
यह फ़्लैग `-d` और `-b` विकल्पों पर लागू किया जा सकता है:```
PS C:\Dev> .\SharpWnfDump.exe -d -u

| WNF State Name [WellKnown Lifetime]                             | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_PNPA_DEVNODES_CHANGED                                       | S | W | N | RO | U |       0 |       0 |     140 |
| WNF_AUDC_RENDER                                                 | S | W | N | RO | U |    4096 |    4096 |       7 |
| WNF_AUDC_CAPTURE                                                | S | W | N | RO | U |    4096 |    4096 |       1 |
| WNF_AUDC_SPATIAL_STATUS                                         | S | W | N | RO | U |    4096 |    4096 |       3 |

--snip--

यदि आप Security Descripter जानकारी प्राप्त करना चाहते हैं, तो -s (--sid) फ्लैग सेट करें:``` PS C:\Dev> .\SharpWnfDump.exe -d -s

| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |

| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 |

root@kitploit:~
    D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)

| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 |

root@kitploit:~
    D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)

| WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |

root@kitploit:~
    D:(A;;CC;;;BU)(A;;CCDC;;;SY)

--snip--

root@kitploit:~
यदि आप बफर डेटा प्राप्त करना चाहते हैं, तो `-v` (`--value`) या `-r` (`--read`) फ्लैग सेट करें।
इन फ्लैग्स का उपयोग `-s` फ्लैग के साथ किया जा सकता है:```
PS C:\Dev> .\SharpWnfDump.exe -d -v

| WNF State Name [WellKnown Lifetime]                             | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_WEBA_CTAP_DEVICE_STATE                                      | S | W | N | RW | I |       0 |      12 |       0 |
| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY                              | S | W | N | RW | I |       0 |       4 |       0 |

--snip--

| WNF_AUDC_RENDER                                                 | S | W | N | RO | U |    4096 |    4096 |       1 |

                   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

        00000000 | 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
        00000010 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
        00000020 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........

--snip--

अपने होस्ट पर सभी अस्थायी WNF State Names की जानकारी प्राप्त करने के लिए, -b (--brut) फ़्लैग के साथ निष्पादित करें:``` PS C:\Dev> .\SharpWnfDump.exe -b

| WNF State Name [System Scope] | S | L | P | AC | N | CurSize | MaxSize | Changes |

| 0x41C64E6DA3AC3845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC4845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC6845 | S | T | N | RW | A | 8 | ? | 1 |

--snip--

root@kitploit:~
The `-b` (`--brut`) फ़्लैग का उपयोग `-v` (`--value`) या `-r` (`--read`) फ़्लैग के साथ किया जा सकता है, लेकिन `-s` (`--sid`) फ़्लैग के साथ नहीं किया जा सकता।

`--dump` या `--brut` विकल्प के परिणामों से प्राप्त तालिका में प्रत्येक स्तंभ का अर्थ इस प्रकार है:

| Column Name | Description |
| :--- | :--- |
| `WNF State Name` | WNF स्टेट नाम यहाँ आउटपुट होते हैं |
| `S` | WNF स्टेट नाम के लिए डेटा स्कोप। प्रदर्शित अक्षरों के अर्थ इस प्रकार हैं:<br><br>+ `S` : सिस्टम स्कोप<br>+ `s` : सेशन स्कोप<br>+ `U` : उपयोगकर्ता स्कोप<br>+ `P` : प्रोसेस स्कोप<br>+ `M` : मशीन स्कोप<br>+ `p` : फिज़िकल मशीन स्कोप |
| `L` | WNF स्टेट नाम के लिए लाइफटाइम। प्रदर्शित अक्षरों के अर्थ इस प्रकार हैं:<br><br>+ `W` : वेल-नोन<br>+ `P` : परमानेंट<br>+ `V` : पर्सिस्टेंट (वोलेटाइल)<br>+ `T` : टेम्परेरी |
| `P` | प्रदर्शित करता है कि WNF स्टेट नाम स्थायी है या नहीं:<br><br>+ `Y` : हाँ<br>+ `N` : नहीं |
| `AC` | WNF स्टेट नाम के लिए एक्सेस नियंत्रण:<br><br>+ `RW` : पठनीय और लिखने योग्य<br>+ `RO` : केवल पठनीय<br>+ `WO` : केवल लिखने योग्य<br>+ `NA` : न पठनीय और न लिखने योग्य |
| `N` | सब्सक्राइबर की उपस्थिति प्रदर्शित करता है:<br><br>+ `A` : सब्सक्राइबर मौजूद है<br>+ `I` : कोई सब्सक्राइबर मौजूद नहीं है<br>+ `U` : अज्ञात |
| `CurSize` | यह संख्या WNF स्टेट नाम के लिए उपयोग किए गए वर्तमान बफर आकार को दर्शाती है। |
| `MaxSize` | यह संख्या WNF स्टेट नाम के लिए उपयोग किए जा सकने वाले अधिकतम बफर आकार को दर्शाती है। |
| `Changes` | यह संख्या दर्शाती है कि कितनी बार अपडेट किया गया। |

यदि आप किसी विशिष्ट WNF स्टेट नाम के बारे में जानकारी प्राप्त करना चाहते हैं, तो `SharpWnfDump.exe` को `-i` (`--info`) विकल्प के साथ निम्नानुसार निष्पादित करें:```
PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN

| WNF State Name                                                  | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_SHEL_APPRESOLVER_SCAN                                       | S | W | N | RW | A |       4 |       4 |       1 |

-i (--info) विकल्प का उपयोग -v (--value), -r (--read), और -s (--sid) फ़्लैग के साथ किया जा सकता है:``` PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN -s -v

| WNF State Name | S | L | P | AC | N | CurSize | MaxSize | Changes |

| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 1 |

root@kitploit:~
    D:(A;;CC;;;WD)(A;;CCDC;;;AU)(A;;CCDC;;;AC)

               00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

    00000000 | 01 00 00 00                                     | ....
root@kitploit:~
किसी विशिष्ट WNF State Name से डेटा पढ़ने के लिए, `-r` (`--read`) फ़्लैग का उपयोग इस प्रकार करें:```
PS C:\Dev> .\SharpWnfDump.exe -r WNF_SHEL_APPRESOLVER_SCAN

WNF_SHEL_APPRESOLVER_SCAN:

        00000000 | 11 00 00 00                                     | ....

किसी विशिष्ट WNF State Name में डेटा लिखने के लिए, -w (--write) फ्लैग का उपयोग इस प्रकार करें (लिखने के लिए डेटा एक फ़ाइल के साथ प्रदान किया जाना चाहिए):``` PS C:\Dev> "hi" | Out-File -Encoding ascii -FilePath C:\Dev\test.txt PS C:\Dev> Get-Content -Path C:\Dev\test.txt hi PS C:\Dev> .\SharpWnfDump.exe -w WNF_SHEL_APPRESOLVER_SCAN C:\Dev\test.txt

[>] Trying to write data. [] Target WNF Name : WNF_SHEL_APPRESOLVER_SCAN [] Data Source : C:\Dev\test.txt [+] Data is written successfully.

PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN -r

| WNF State Name | S | L | P | AC | N | CurSize | MaxSize | Changes |

| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 2 |

root@kitploit:~
               00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

    00000000 | 68 69 0D 0A                                     | hi..
root@kitploit:~
### SharpWnfNameDumper

[वापस ऊपर](#sharpwnfsuite)

[प्रोजेक्ट](https://github.com/daem0nc0re/sharpwnfsuite/blob/main/SharpWnfSuite/SharpWnfNameDumper)

यह टूल DLL से Well-Known State Name डंप करता है (आमतौर पर perf_nt_c.dll)।
[WnfNameDumper.py](https://github.com/ionescu007/wnfun/blob/master/script_python/WnfNameDumper.py) के समकक्ष।

आमतौर पर, Well-Known State Names perf_nt_c.dll में निहित होते हैं (यह Windows Performance Analyzer में है)।
DLL से Well-Known State Names डंप करने के लिए, `SharpWnfNameDumper.exe` को `-d` (`--dump`) विकल्प के साथ निम्नानुसार चलाएँ:```
PS C:\Dev> .\SharpWnfNameDumper.exe -d perf_nt_c.dll

[>] Output results in C# style.

public enum WELL_KNOWN_WNF_NAME : ulong
{
    WNF_9P_REDIRECTOR_STARTED = 0x41C61E54A3BC1075UL,
    WNF_9P_UNKNOWN_DISTRO_NAME = 0x41C61E54A3BC0875UL,

--snip--

यदि आप Well-Known State Names के लिए विवरण डंप करना चाहते हैं, तो -v फ़्लैग सेट करें:``` PS C:\Dev> .\SharpWnfNameDumper.exe -d perf_nt_c.dll -v

[>] Output results in C# style.

public enum WELL_KNOWN_WNF_NAME : ulong { // The Plan 9 Redirector was started and is ready to accept requests. WNF_9P_REDIRECTOR_STARTED = 0x41C61E54A3BC1075UL, // The Plan 9 Redirector got a request for an unknown WSL distribution and there is no user callback registered to query it. WNF_9P_UNKNOWN_DISTRO_NAME = 0x41C61E54A3BC0875UL,

--snip--

root@kitploit:~
आउटपुट प्रारूप निर्दिष्ट करने के लिए, `-f` (`--format`) विकल्प का उपयोग करें। `SharpWnfNameDumper.exe` C#, C (`-f c`) और Python (`-f py`) प्रारूप का समर्थन करता है (डिफ़ॉल्ट प्रारूप C# है):```
PS C:\Dev> .\SharpWnfNameDumper.exe -d perf_nt_c.dll -f py

[>] Output results in Python style.

g_WellKnownWnfNames = {
    "WNF_9P_REDIRECTOR_STARTED": 0x41C61E54A3BC1075,
    "WNF_9P_UNKNOWN_DISTRO_NAME": 0x41C61E54A3BC0875,

--snip--

परिणाम को फ़ाइल में आउटपुट करने के लिए, आउटपुट फ़ाइल पथ निर्दिष्ट करने हेतु -o (--output) विकल्प का उपयोग करें:``` PS C:\Dev> .\SharpWnfNameDumper.exe -d perf_nt_c.dll -o result.txt

[>] Output results in C# style.

C:\dev>type result.txt public enum WELL_KNOWN_WNF_NAME : ulong { WNF_9P_REDIRECTOR_STARTED = 0x41C61E54A3BC1075UL, WNF_9P_UNKNOWN_DISTRO_NAME = 0x41C61E54A3BC0875UL,

--snip--

root@kitploit:~
2 DLLs से diff लेने के लिए, `-D` (`--diff`) विकल्प का उपयोग करें:```
PS C:\Dev> .\SharpWnfNameDumper.exe -D perf_nt_c_old.dll perf_nt_c_new.dll

[>] Output results in C# style.

################################################
#                   NEW KEYS                   #
################################################


public enum WELL_KNOWN_WNF_NAME : ulong
{
    WNF_SHEL_CHAT_ICON_BADGE = 0x0D83063EA3B8A035UL,
    WNF_SHEL_ENTERPRISE_START_PINS_POLICY_VALUE_CHANGED = 0x0D83063EA3B89475UL,
    WNF_SHEL_FILE_EXPLORER_PINNED_FOLDERS = 0x0D83063EA3B8ACF5UL,
    WNF_SHEL_MAC_AUTO_UPDATE_SUCCEEDED = 0x0D83063EA3B89875UL
}

SharpWnfClient

वापस शीर्ष पर

प्रोजेक्ट

यह एक WNF State Name को सब्सक्राइब करने का टूल है। यह wnfclient-rtl.exe और WnfClientServer.py के समकक्ष है।

उदाहरण के लिए, यदि आप WNF_SHEL_APPLICATION_STARTED की स्थिति की निगरानी करना चाहते हैं, तो SharpWnfClient.exe को इस प्रकार निष्पादित करें:``` PS C:\Dev> .\SharpWnfClient.exe WNF_SHEL_APPLICATION_STARTED

[>] Received data from server. [] Timestamp : 4 [] Buffer Size : 92 byte(s) [*] Data :

root@kitploit:~
               00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

    00000000 | 61 00 3A 00 6D 00 69 00-63 00 72 00 6F 00 73 00 | a.:.m.i. c.r.o.s.
    00000010 | 6F 00 66 00 74 00 2E 00-77 00 69 00 6E 00 64 00 | o.f.t... w.i.n.d.
    00000020 | 6F 00 77 00 73 00 74 00-65 00 72 00 6D 00 69 00 | o.w.s.t. e.r.m.i.
    00000030 | 6E 00 61 00 6C 00 5F 00-38 00 77 00 65 00 6B 00 | n.a.l._. 8.w.e.k.
    00000040 | 79 00 62 00 33 00 64 00-38 00 62 00 62 00 77 00 | y.b.3.d. 8.b.b.w.
    00000050 | 65 00 21 00 61 00 70 00-70 00 00 00             | e.!.a.p. p...
root@kitploit:~
फिर, यदि आप notepad एप्लिकेशन शुरू करते हैं, तो आपको निम्नलिखित परिणाम देखना चाहिए:```
[>] Received data from server.
    [*] Timestamp : 5
    [*] Buffer Size : 90 byte(s)
    [*] Data :

                   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

        00000000 | 61 00 3A 00 6D 00 69 00-63 00 72 00 6F 00 73 00 | a.:.m.i. c.r.o.s.
        00000010 | 6F 00 66 00 74 00 2E 00-77 00 69 00 6E 00 64 00 | o.f.t... w.i.n.d.
        00000020 | 6F 00 77 00 73 00 6E 00-6F 00 74 00 65 00 70 00 | o.w.s.n. o.t.e.p.
        00000030 | 61 00 64 00 5F 00 38 00-77 00 65 00 6B 00 79 00 | a.d._.8. w.e.k.y.
        00000040 | 62 00 33 00 64 00 38 00-62 00 62 00 77 00 65 00 | b.3.d.8. b.b.w.e.
        00000050 | 21 00 61 00 70 00 70 00-00 00                   | !.a.p.p. ..

SharpWnfServer

Back to Top

Project

यह उपकरण एक अस्थायी जीवनकाल वाला WNF State Name बनाता है और सब्सक्राइबर को कुछ संदेश भेजता है। यह wnfserver.exe और WnfClientServer.py के समतुल्य है।

नया WNF State Name सर्वर शुरू करने के लिए, बस SharpWnfServer.exe निष्पादित करें। हमें निम्नानुसार एक इंटरैक्टिव शेल में प्रवेश करना चाहिए:``` PS C:\Dev> .\SharpWnfServer.exe

[+] New WNF State Name is created successfully : 0x41C64E6DA3834945

Encoded State Name: 0x41C64E6DA3834945, Decoded State Name: 0x3F4931 Version: 1, Lifetime: Temporary, Scope: Machine, Permanent: NO, Sequence Number: 0x7E9, Owner Tag: 0x0

Sending input data to WNF subscriber...

[INPUT]>

root@kitploit:~
`SharpWnfServer.exe` को निष्पादित करने के बाद, किसी अन्य टर्मिनल से `SharpWnfClient.exe` को `SharpWnfServer.exe` के साथ दिए गए WNF State Name के साथ निष्पादित करें। आपको `SharpWnfServer.exe` से संदेश के रूप में "Hello, world!" प्राप्त होना चाहिए:```
PS C:\Dev> .\SharpWnfClient.exe 0x41C64E6DA3834945

[>] Received data from server.
    [*] Timestamp : 1
    [*] Buffer Size : 13 byte(s)
    [*] Data :

                   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

        00000000 | 48 65 6C 6C 6F 2C 20 77-6F 72 6C 64 21          | Hello,.w orld!

अतिरिक्त संदेश SharpWnfClient.exe को प्रकाशित करने के लिए, अपना संदेश SharpWnfServer.exe के इंटरैक्टिव शेल में दर्ज करें:``` [INPUT]> This is WNF test Sending input data to WNF subscriber...

[INPUT]>

root@kitploit:~
फिर, आपको टर्मिनल में `SharpWnfClient.exe` के लिए निम्न संदेश दिखाई देना चाहिए:```
[>] Received data from server.
    [*] Timestamp : 2
    [*] Buffer Size : 16 byte(s)
    [*] Data :

                   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

        00000000 | 54 68 69 73 20 69 73 20-57 4E 46 20 74 65 73 74 | This.is. WNF.test

SharpWnfScan

Back to Top

Project

यह उपकरण modexp के wnfscan पर आधारित है, और प्रोसेस से WNF सदस्यता जानकारी डंप करता है।``` PS C:\Dev> .\SharpWnfScan.exe -h

SharpWnfScan - Tool for dumping WNF information from process.

Usage: SharpWnfScan.exe [Options]

root@kitploit:~
    -h, --help        : Displays this help message.
    -p, --pid         : Specifies the target PID.
    -P, --processname : Specifies the target process name.
    -n, --name        : Specifies a wnf state name for filtering.
    -a, --all         : Flag to dump information from all process.
    -l, --list        : Flag to list WNF State Name on this system.
    -d, --debug       : Flag to enable SeDebugPrivilege. Administrative privilege is required.
    -v, --verbose     : Flag to get verbose information.
root@kitploit:~
किसी विशिष्ट प्रक्रिया को डंप करने के लिए, `-p` विकल्प इस प्रकार सेट करें:```
PS C:\Dev> .\SharpWnfScan.exe -p 5800

Process ID      : 5800
Image File Name : C:\Windows\explorer.exe
Architecture    : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x0000000001206660

    WNF_NAME_SUBSCRIPTION @ 0x0000000001206B00
    StateName : 0x0280032EA3BC0875 (WNF_CMFC_FEATURE_CONFIGURATION_CHANGED)

    WNF_NAME_SUBSCRIPTION @ 0x000000000120AD10
    StateName : 0x418B1929A3BC3835 (WNF_DWM_DUMP_REQUEST)

    WNF_NAME_SUBSCRIPTION @ 0x0000000005099950
    StateName : 0x41960A2EA3BC1835 (WNF_CDP_CDPUSERSVC_READY)

--snip--

यदि आप WNF_USER_SUBSCRIPTION जानकारी प्राप्त करना चाहते हैं, तो -v फ्लैग निम्नानुसार सेट करें:``` PS C:\Dev> .\SharpWnfScan.exe -p 5800 -v

Process ID : 5800 Image File Name : C:\Windows\explorer.exe Architecture : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x0000000001206660

root@kitploit:~
WNF_NAME_SUBSCRIPTION @ 0x0000000001206B00
StateName : 0x0280032EA3BC0875 (WNF_CMFC_FEATURE_CONFIGURATION_CHANGED)

    WNF_USER_SUBSCRIPTION @ 0x0000000001206A40
    Callback @ 0x00007FFE88478470 (ntdll!RtlNotifyFeatureUsage+0x1C0)
    Context  @ 0x00007FFE886F0B20 (ntdll!NlsAnsiCodePage+0x2390)

WNF_NAME_SUBSCRIPTION @ 0x000000000120AD10
StateName : 0x418B1929A3BC3835 (WNF_DWM_DUMP_REQUEST)

    WNF_USER_SUBSCRIPTION @ 0x0000000001207FD0
    Callback @ 0x00007FF7073027C0 (explorer)
    Context  @ 0x0000000001208CC0 (N/A)

--snip--

root@kitploit:~
आप `-P` विकल्प के साथ नाम से लक्षित प्रक्रियाओं को निर्दिष्ट कर सकते हैं:```
PS C:\Dev> .\SharpWnfScan.exe -P notepad

Process ID      : 8720
Image File Name : C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_11.2401.26.0_arm64__8wekyb3d8bbwe\Notepad\Notepad.exe
Architecture    : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x000001DE2B007560

    WNF_NAME_SUBSCRIPTION @ 0x000001DE2B02D640
    StateName : 0x41C61629A3BC2835 (WNF_DX_MONITOR_CHANGE_NOTIFICATION)

    WNF_NAME_SUBSCRIPTION @ 0x000001DE2B03E040
    StateName : 0x41950223A3BC1035 (WNF_NLS_USER_UILANG_CHANGED)

--snip--

राज्य नाम से फ़िल्टर करने के लिए, -n विकल्प में hex या ज्ञात wnf नाम स्ट्रिंग सेट करें जैसा कि निम्नानुसार है:``` PS C:\Dev> .\SharpWnfScan.exe -P notepad -n WNF_RPCF_FWMAN_RUNNING

Process ID : 8720 Image File Name : C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_11.2401.26.0_arm64__8wekyb3d8bbwe\Notepad\Notepad.exe Architecture : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x000001DE2B007560

root@kitploit:~
WNF_NAME_SUBSCRIPTION @ 0x000001DE2B075040
StateName : 0x07851E3FA3BC0875 (WNF_RPCF_FWMAN_RUNNING)

PS C:\Dev> .\SharpWnfScan.exe -P notepad -n 0x07851E3FA3BC0875

Process ID : 8720 Image File Name : C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_11.2401.26.0_arm64__8wekyb3d8bbwe\Notepad\Notepad.exe Architecture : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x000001DE2B007560

root@kitploit:~
WNF_NAME_SUBSCRIPTION @ 0x000001DE2B075040
StateName : 0x07851E3FA3BC0875 (WNF_RPCF_FWMAN_RUNNING)
root@kitploit:~
एक समय में सभी प्रोसेस डंप करने के लिए, `-a` विकल्प का उपयोग करें:```
PS C:\Dev> .\SharpWnfScan.exe -a

Process ID      : 1180
Image File Name : C:\Windows\System32\svchost.exe
Architecture    : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x000002101A806560

    WNF_NAME_SUBSCRIPTION @ 0x000002101A830120
    StateName : 0x07851E3FA3BC0875 (WNF_RPCF_FWMAN_RUNNING)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C1C0
    StateName : 0x41C64E6DA3B0E045 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A833C50
    StateName : 0x41C64E6DA3BC6145 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A846A50
    StateName : 0x41C64E6DA3BD0945 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86CA00
    StateName : 0x41C64E6DA3BB8045 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A806A00
    StateName : 0x0280032EA3BC0875 (WNF_CMFC_FEATURE_CONFIGURATION_CHANGED)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C4C0
    StateName : 0x41C64E6DA3B1E045 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C700
    StateName : 0x41C64E6DA3A0F945 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A830EE0
    StateName : 0x4195003AA3BC0875 (WNF_WNS_CONNECTIVITY_STATUS)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C880
    StateName : 0x41C6072FA3BC3875 (WNF_BI_APPLICATION_SERVICING_START_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86CC40
    StateName : 0x41C6072FA3BC1875 (WNF_BI_USER_LOGOFF_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A835E90
    StateName : 0x41C6072FA3BC1075 (WNF_BI_USER_LOGON_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86CD00
    StateName : 0x41C6072FA3BC2875 (WNF_BI_SESSION_DISCONNECT_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86CAC0
    StateName : 0x41C6072FA3BC2075 (WNF_BI_SESSION_CONNECT_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C940
    StateName : 0x41840B3EA3BC2075 (WNF_SEB_NETWORK_STATE_CHANGES)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A853920
    StateName : 0x41C6072FA3BC3075 (WNF_BI_APPLICATION_UNINSTALL_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A836040
    StateName : 0x41C6072FA3BC4875 (WNF_BI_LOCK_SCREEN_UPDATE_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C580
    StateName : 0x41C6072FA3BC4075 (WNF_BI_APPLICATION_SERVICING_STOP_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A833B80
    StateName : 0x41C6072FA3BC6075 (WNF_BI_QUIET_MODE_UPDATE_CHANNEL)

    WNF_NAME_SUBSCRIPTION @ 0x000002101A86C400
    StateName : 0x41C6072FA3BC5075 (WNF_BI_EVENT_DELETION)

Process ID      : 2952
Image File Name : C:\Windows\System32\svchost.exe
Architecture    : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x0000023DD3A065C0

    WNF_NAME_SUBSCRIPTION @ 0x0000023DD3AF8B80
    StateName : 0x41C64E6DA3B1E045 (N/A)

    WNF_NAME_SUBSCRIPTION @ 0x0000023DD3AF8C40
    StateName : 0x41C64E6DA3BC6145 (N/A)

--snip--

SeDebugPrivilege को सक्षम करने के लिए, -d फ्लैग को इस प्रकार सेट करें। इस विकल्प के लिए व्यवस्थापकीय विशेषाधिकार की आवश्यकता होती है:``` PS C:\Dev> .\SharpWnfScan.exe -d -P winlogon

[+] SeDebugPrivilege is enabled successfully.

Process ID : 680 Image File Name : C:\Windows\System32\winlogon.exe Architecture : ARM64

WNF_SUBSCRIPTION_TABLE @ 0x00000265F4E05F80

root@kitploit:~
WNF_NAME_SUBSCRIPTION @ 0x00000265F4E48AE0
StateName : 0x41C64E6DA3BC6145 (N/A)

WNF_NAME_SUBSCRIPTION @ 0x00000265F4E27AD0
StateName : 0x41C61629A3BC1035 (WNF_DX_MODE_CHANGE_NOTIFICATION)

--snip--

root@kitploit:~
लक्ष्य प्रणाली में उपयोग होने वाले WNF State Names की सूची बनाने के लिए, `-l` फ़्लैग इस प्रकार सेट करें:```
PS C:\Dev> .\SharpWnfScan.exe -l

[>] Trying to list WNF State Names used in this system. Wait a moment.

[1304 WNF State Names]

[*] 0x07851E3FA3BC0875 (WNF_RPCF_FWMAN_RUNNING)
[*] 0x41C64E6DA3B0E045 (N/A)
[*] 0x41C64E6DA3BC6145 (N/A)
[*] 0x41C64E6DA3BD0945 (N/A)
[*] 0x41C64E6DA3BB8045 (N/A)
[*] 0x0280032EA3BC0875 (WNF_CMFC_FEATURE_CONFIGURATION_CHANGED)
[*] 0x41C64E6DA3B1E045 (N/A)

--snip--

[16 Access Denied Processes]

[*] svchost (PID : 2352)
[*] svchost (PID : 4952)
[*] MsMpEng (PID : 3132)
    
--snip--

[*] Done.

SharpWnfInject

शीर्ष पर वापस जाएँ

प्रोजेक्ट

यह उपकरण यह जाँचने के लिए है कि हमलावर कोड इंजेक्शन तकनीक के लिए WNF का दुरुपयोग कैसे कर सकते हैं:``` PS C:\Dev> .\SharpWnfInject.exe -h

SharpWnfInject - Tool to investigate WNF code injection technique.

Usage: SharpWnfInject.exe [Options]

root@kitploit:~
    -h, --help  : Displays this help message.
    -n, --name  : Specifies WNF State Name to inject. Hex format or Well-known name format is accepted.
    -p, --pid   : Specifies PID to inject.
    -i, --input : Specifies the file path to shellcode.
    -d, --debug : Flag to enable SeDebugPrivilege. Requires administrative privilege.

[!] -n option is required.

root@kitploit:~
यह टूल `WNF_USER_SUBSCRIPTION` में विशिष्ट WNF स्टेट नाम के लिए कॉलबैक फंक्शन पॉइंटर को ओवरराइट करता है।
कोड इंजेक्शन तकनीक सभी WNF स्टेट नाम के लिए काम नहीं करती है।
उदाहरण के लिए, यह तकनीक `explorer.exe` द्वारा Windows 11 23H2 में उपयोग किए जाने वाले `WNF_SHEL_WINDOWSTIP_CONTENT_PUBLISHED` के लिए उपलब्ध मानी जाती है।
इस तकनीक का परीक्षण करने के लिए, इस टूल को निम्नानुसार निष्पादित करें:```
PS C:\Dev> .\SharpWnfInject.exe -p 5800 -n WNF_SHEL_WINDOWSTIP_CONTENT_PUBLISHED -i .\notepad_arm64.bin

[*] Target WNF State Name is 0x0D83063EA3BE10F5 (WNF_SHEL_WINDOWSTIP_CONTENT_PUBLISHED).
[+] Got a handle from the target Process
    [*] Process Name    : explorer.exe
    [*] Process ID      : 5800
    [*] Image File Name : C:\Windows\explorer.exe
    [*] Architecture    : ARM64
[+] Pointer for WNF_SUBSCRIPTION_TABLE is at 0x00007FFE886F4E20.
[+] WNF_SUBSCRIPTION_TABLE is at 0x0000000001206660.
[*] WNF_NAME_SUBSCRIPTION is at 0x0000000001273540.
[+] Got 1 WNF_USER_SUBSCRIPTION.
[*] Target callback pointer is at 0x00000000051C2250.
[*] Callback function is at 0x00007FFE54FD4D20 (twinui!DllGetClassObject+0x11AFF0).
[+] Shellcode buffer is at 0x0000000003270000.
[+] 344 bytes shellcode is written successfully.
[+] Callback pointer is overwritten successfully.
[>] Triggering shellcode.
[+] WNF State Data is updated successfully. Shellcode might be executed.
[+] Callback pointer is reverted successfully.
[*] Done.

यदि आप SeDebugPrivilege सक्षम करना चाहते हैं, तो -d फ़्लैग सेट करें और व्यवस्थापकीय विशेषाधिकार के साथ निष्पादित करें। नोटपैड निष्पादित करने के लिए नमूना शेलकोड Shellcode निर्देशिका में स्थित हैं।

KernelPrimitive

शीर्ष पर वापस जाएँ

इस निर्देशिका में प्रोजेक्ट कर्नेल शोषण के लिए WNF प्रिमिटिव प्रदर्शित करने के लिए हैं। आप Alex Plaskett की वार्ता और ब्लॉग (भाग 1, भाग 2, स्लाइड) में विस्तृत जानकारी पढ़ सकते हैं।

PoC की विश्वसनीयता 100% नहीं है। मैंने Windows 10 x64 के सभी संस्करणों के लिए कर्नेल ऑफसेट परिभाषित किए हैं, लेकिन केवल Windows 10 Version 1903 x64 पर परीक्षण किया है।

प्रोजेक्टविवरण
PoolVulnDrvयह WNF कर्नेल प्रिमिटिव का परीक्षण करने के लिए एक कमजोर कर्नेल ड्राइवर है।
WnfPoolOverflowयह PoolVulnDrv का शोषण करने के लिए एक PoC है।

WnfPrimitive.png

WnfCallbackPayload

इस निर्देशिका में आपका स्वयं का WNF कॉलबैक शेलकोड बनाने के लिए दस्तावेज़ और नमूना कोड शामिल हैं। देखें README.md।

संदर्भ

शीर्ष पर वापस जाएँ

  • विंडोज़ नोटिफिकेशन सुविधा: अब तक का सबसे कम प्रलेखित कर्नेल आक्रमण सतह का प्याज छीलना
  • विंडोज़ नोटिफिकेशन सुविधा (WNF) के साथ खेलना
  • wnfun
  • विंडोज़ प्रोसेस इंजेक्शन: विंडोज़ नोटिफिकेशन सुविधा
  • विंडोज़ 11 में नई WNF उपयोगकर्ता सदस्यता संरचनाएँ
  • CVE-2021-31956 विंडोज़ कर्नेल का शोषण (NTFS के साथ WNF) – भाग 1
  • CVE-2021-31956 विंडोज़ कर्नेल का शोषण (NTFS के साथ WNF) – भाग 2
  • POC2021 – NTFS और WNF के साथ विंडोज़ 10 कर्नेल को हैक करने की स्लाइड्स

आभार

शीर्ष पर वापस जाएँ

आपके शोध के लिए धन्यवाद:

  • Alex Ionescu (@aionescu)
  • Gabrielle Viala (@pwissenlit)
  • odzhan (@modexpblog)
  • Alex Plaskett (@alexjplaskett)

आपकी सहायता के लिए धन्यवाद:

  • mishap (@oopsmishap)
टूल डाउनलोड करें