HEVD カーネルエクスプロイト(hevd-kernel-exploitation)

Security

概要

このリポジトリは、HackSys Extreme Vulnerable Driver(HEVD)の arbitary write 脆弱性に対する実証的なカーネルエクスプロイト例を収めています。IOCTL 0x22200B を介した任意書き込みプリミティブを利用し、ページディレクトリ(PDE)エントリの操作でメモリ保護を迂回してカーネル領域にシェルコードを展開、さらに NtAddAtom をトランポリントとしてフックし、そこから任意のカーネル関数(本例では DbgPrint)を呼び出す流れを示します。教育用の実験・検証サンプルとして、カーネル保護(DEP/SMEP/KASLR 等)やページテーブル操作の理解に役立つ構成です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 2
  • ファイル数: 3
  • メインの言語: C++

主な特徴

  • HEVD の任意書き込みプリミティブ(IOCTL 0x22200B)を利用した実証コード
  • ページディレクトリ(PDE)操作により書き込み保護を迂回してカーネル領域へコードを設置
  • カーネル内でのシェルコードを介した NtAddAtom のフック(トランポリント)実装
  • 任意カーネル関数(DbgPrint)の呼び出しをデモンストレーション

技術的なポイント

本リポジトリは「任意書き込み」を起点とした典型的なカーネル攻撃パターンを教育的に示しています。任意書き込みがあると、単に関数ポインタやデータを書き換えるだけでなく、ページテーブル自体(PDE/PTE)を改変してメモリ保護属性を変更する手法が取れます。ここではページディレクトリのエントリを書き換え、標準では書き込み不可な領域に対して書き込み可能(あるいは実行可能)なマッピングを作り、そこにカーネルコンテキストで動作するシェルコードを配置します。

配置したシェルコードは直接呼び出すのではなく、ユーザから誘発できるカーネル経路(本例では NtAddAtom)をトランポリントとしてフックすることで発動させます。具体的には、任意書き込みでフック先のエントリを改変し、呼び出し時に先ほどのシェルコードへ制御を移すことでカーネル空間での任意コード実行を達成します。これにより DbgPrint のような任意カーネル関数を呼び出す検証が可能です。

重要な点として、実際の環境には SMEP/SMAP、DEP、KASLR、Kernel Patch Protection(Windows の場合)など様々な防御があり、単純な任意書き込みでの成功は難しくなっています。本リポジトリは教育目的の検証用であり、これら保護の概念や回避手法(例:ページテーブルの直接操作や正当なカーネル領域を使ったトランポリント等)を学ぶためのサンプルを提供します。実運用システムでの悪用を促す意図はなく、解析・防御・ミティゲーション評価のための参考資料として利用することが想定されています。(約700–1200字相当、技術的背景と安全配慮を含む)

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • hevd-kernel-exploitation.sln: file
  • hevd-kernel-exploitation: dir

まとめ

教育目的のカーネル攻撃検証サンプルで、ページテーブル操作やトランポリント技術の学習に有用です(約50字)。

リポジトリ情報:

READMEの抜粋:

HEVD Kernel Exploitation

Exploitation of arbitrary write vulnerability in HackSys Extreme Vulnerable Driver.

Summary

Demonstrates kernel arbitrary write primitive (IOCTL 0x22200B) leading to code execution through:

  • PDE manipulation to bypass memory write protection
  • NtAddAtom function hooking via shellcode trampoline
  • Arbitrary kernel function execution (DbgPrint)

Writeup: https://vith0r.gitbook.io/public/mal