
प्रक्रिया इंजेक्शन तकनीकों (shellcode, DLL, और reflective injection सहित) की रीयल-टाइम पहचान के लिए kernel-mode Windows ड्राइवर, जिसमें syscall हुकिंग और anomaly detection शामिल है।
FalconEye एक विंडोज एंडपॉइंट डिटेक्शन सॉफ्टवेयर है जो रीयल-टाइम प्रोसेस इंजेक्शन के लिए है। यह एक कर्नेल-मोड ड्राइवर है जिसका उद्देश्य प्रोसेस इंजेक्शन को होते हुए (रीयल-टाइम) पकड़ना है। चूंकि FalconEye कर्नेल मोड में चलता है, यह प्रोसेस इंजेक्शन तकनीकों के खिलाफ एक मजबूत और विश्वसनीय सुरक्षा प्रदान करता है जो विभिन्न यूजर-मोड हुक से बचने की कोशिश करती हैं।
आप हमारी प्रस्तुति 2021 Blackhat ASIA Arsenal और स्लाइड्स पर देख सकते हैं।
नीचे दी गई तालिका विभिन्न प्रोसेस इंजेक्शन तकनीकों के लिए कार्यान्वयन स्थिति और पहचान तर्क दिखाती है। WPM का अर्थ WriteProcessMemory है। पहचान का परीक्षण करने के लिए, संदर्भ अनुभाग देखें।
| तकनीक | स्थिति | पहचान | प्रयुक्त POC |
|---|---|---|---|
| Atombombing | ✓ | QueueUserAPC हुक करें और GlobalGetAtom फ़ंक्शन परिवार देखें | Pinjectra |
| Instrumentation callback injection | ✓ | पता लगाएं कि क्या फ्लोटिंग कोड से एक नया थ्रेड बनाया गया है | https://github.com/antonioCoco/Mapping-Injection |
| Reflective DLL Injection | ✓ | पता लगाएं कि क्या फ्लोटिंग कोड से एक नया थ्रेड बनाया गया है और क्या PE हेडर पीड़ित में लिखा जा रहा है | MInjector |
| PROPagate | ✓ | SetProp हुक करें ताकि लिखी जा रही संपत्ति का पता प्राप्त करें और फ्लोटिंग कोड का पता प्राप्त करने के लिए पिछले WPM कॉल के साथ सहसंबंधित करें | Pinjectra |
| Process Hollowing | ✓ | लक्ष्य प्रक्रिया मेमोरी में लिखे गए PE हेडर का उपयोग करके पता लगाया गया | MInjector |
| CreateRemoteThread with LoadLibrary | ✓ | प्रारंभ पता LoadLibrary की ओर इंगित करने वाला नया थ्रेड। MInjector संस्करण WPM का उपयोग करके DLL पथ भी लिखता है जो पता लगाया जाता है | MInjector, Pinjectra |
| CreateRemoteThread with MapViewOfFile | ✓ | पता लगाएं कि क्या फ्लोटिंग कोड से एक नया थ्रेड बनाया गया है | Pinjectra |
| Suspend-Inject-Resume | ✓ | पता लगाएं कि क्या फ्लोटिंग कोड से एक नया थ्रेड बनाया गया है (MInjector)। WPM के माध्यम से DLL पथ लिखा जा रहा है (MInjector)। पता लगाएं कि क्या पहले से निलंबित थ्रेड पर संदर्भ सेट किया गया है (Pinjectra) | MInjector, Pinjectra |
| QueueUserAPC | ✓ | WPM के माध्यम से DLL पथ लिखा जा रहा है | MInjector |
| QueueUserAPC with memset (Stackbombing) | ✓ | QueueUserAPC हुक करें और memset देखें | Pinjectra |
| SetWindowLong (एक्स्ट्रा विंडो मेमोरी इंजेक्शन) | ✓ | SetWindowLong हुक करें ताकि लिखे जा रहे फ़ंक्शन पॉइंटर का पता प्राप्त करें और फ्लोटिंग कोड का पता प्राप्त करने के लिए पिछले WPM कॉल के साथ सहसंबंधित करें | Pinjectra |
| Unmap + Overwrite | ✓ | अलर्ट करें यदि हमलावर प्रक्रिया पीड़ित से ntdll को अनमैप कर रही है | Pinjectra |
| Kernel Ctrl Table | ✓ | पता लगाएं कि क्या WPM पीड़ित के PEB में KernelCallbackTable फ़ील्ड को ओवरराइट कर रहा है | https://github.com/odzhan/injection/blob/master/kct |

नोट: हमारा ध्यान पहचान पर रहा है, न कि प्रदर्शनकारी पहचान इंजन बनाने पर। हम BlackHat प्रस्तुति के बाद भी इन प्रयासों को जारी रखेंगे।
.
├── src
│ ├── FalconEye ---------------------------# FalconEye user and kernel space
│ └── libinfinityhook ---------------------# Kernel hook implementation
├── 2021BHASIA_FalconEye.pdf
└── README.md
BCDEDIT /set nointegritychecks ONइत्जिक कोटलर और अमित क्लेन. प्रोसेस इंजेक्शन तकनीकें - सबको पकड़ना होगा, Blackhat USA ब्रीफिंग, 2019
Atombombing: विंडोज के लिए बिल्कुल नया कोड इंजेक्शन, 2016
Propagate - एक नई कोड इंजेक्शन तरकीब, 2017
विंडोज प्रोसेस इंजेक्शन: एक्स्ट्रा विंडो बाइट्स, 2018
पावेल असिनोव्स्की. zberp की अपारंपरिक प्रोसेस इंजेक्शन तकनीक में गोता लगाना, 2016
रोटेम केर्नर. Ctrl-inject, 2018
विंडोज प्रोसेस इंजेक्शन: Consolewindowclass, 2018
विंडोज प्रोसेस इंजेक्शन: विंडोज अधिसूचना सुविधा, 2018
एक विरोधाभास: किसी अन्य प्रक्रिया में उसे खोले बिना या वास्तव में उसमें लिखे बिना लिखना, 2007
विंडोज प्रोसेस इंजेक्शन: सेवा नियंत्रण हैंडलर, 2018
FalconEye को Apache 2.0 ओपन सोर्स लाइसेंस के तहत लाइसेंस प्राप्त है।
| USERDATA | ✓ | जांचें कि क्या WPM लक्ष्य पता conhost.exe रेंज में है। यदि हाँ, तो जांचें कि क्या conhost से कोई प्रासंगिक फ़ंक्शन पॉइंटर पहले संग्रहीत WPM पते से मेल खाता है | https://github.com/odzhan/injection/blob/master/conhost |
| Ctrl-inject | ✓ | पता लगाएं कि क्या हमलावर पीड़ित की KernelBase.dll रेंज में WPM करता है | Pinjectra |
| ALPC Callback | ✓ | ALPC पोर्ट पर NtConnectPort कॉल में पीड़ित pid निकालें। हमलावर-पीड़ित pid जोड़ी के लिए पिछले WPM कॉल जांचें और फ्लोटिंग कोड पहचान लागू करें | Pinjectra |
| WNF Callback | ✓ | WPM के बाद UpdateWNFStateData कॉल | https://github.com/odzhan/injection/tree/master/wnf |
| SetWindowsHook | ✓ | NtUserSetWindowsHookEx हुक में पंजीकृत मॉड्यूल पथ सहेजें। बाद में जब इस पथ से मेल खाने वाला मॉड्यूल किसी भिन्न प्रक्रिया में लोड होता है, तो अलर्ट उत्पन्न करें | MInjector |
| GhostWriting | ✓ | पता लगाएं कि क्या पहले से निलंबित थ्रेड पर संदर्भ सेट किया गया है (NtSetContextThread कॉल किया गया है) | Pinjectra |
| Service Control | ✓ | WPM किसी प्रक्रिया (सेवा) के Service IDE को ओवरराइट कर रहा है | https://github.com/odzhan/injection/tree/master/svcctrl |
| Shellcode injection | ✓ | फ्लोटिंग कोड से शुरू किया गया नया थ्रेड। WPM द्वारा DLL पथ लिखा जा रहा है | MInjector |
| Image Mapping | ✓ | फ्लोटिंग कोड से शुरू किया गया थ्रेड। WPM द्वारा PE हेडर लिखा जा रहा है। WPM द्वारा DLL पथ लिखा जा रहा है | MInjector |
| Thread Reuse | ✓ | फ्लोटिंग कोड से शुरू किया गया थ्रेड। WPM द्वारा DLL पथ लिखा जा रहा है | MInjector |