- Notifications
You must be signed in to change notification settings - Fork13
IntroVirt is an guest introspection library for KVM
License
IntroVirt/IntroVirt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
IntroVirt, short for introspective virtualization, is a customized Hypervisor and library that provides a robust virtual machine introspection (VMI) application programming interface (API). VMI is the process of looking at the memory contents of a virtual machine during runtime. By applying knowledge of the guest operating system, introspection can be used for a variety of applications, including reverse engineering, debugging software, and securing guest VMs by limiting access to files or limiting an executing application’s functionality.
IntroVirt consists of three components: a patched version of theKVM Hypervisor, theIntroVirt userland library, and a Microsoft Program Database (MS PDB) parsing librarylibmspdb.
Make sure SecureBoot is disabled on your system (you can also run IntroVirt nested in KVM)
- If someone wants to help me figure out a way around this please do!
Download the latestrelease for your Ubuntu version and install
wget https://github.com/IntroVirt/IntroVirt/releases/latest/download/Ubuntu-$(lsb_release -sc)-$(lsb_release -sr).tar.xztar -Jxvf Ubuntu-$(lsb_release -sc)-$(lsb_release -sr).tar.xzcd Ubuntu-$(lsb_release -sc)-$(lsb_release -sr)sudo apt install ./*.deb
Make sure all VMs on the current system are off before installing kvm-introvirt.
Download and install the latestkvm-introvirt release that matches your kernel version (
uname -a
). If one does not exist, see the instructions in thekvm-introvirt READEME.md for how to build it yourself and pleasesubmit an issue for support.- We try to keep up with the latest kernel for each supported LTS. If you are behind, consider updating.
wget https://github.com/IntroVirt/kvm-introvirt/releases/latest/download/kvm-introvirt-$(uname -r).$(lsb_release -sr)-1.0.0.debsudo apt install ./kvm-introvirt-$(uname -r).$(lsb_release -sr)-1.0.0.deb
Test with:
sudo ivversion
Get a live system call trace from a running Windows 10 VM:
sudo ivsyscallmon -D win10-22H2
- This assumes you've installed a Windows 10 22H2 VM, named it "win10-22H2" and it is running.
Ditro | Latest Supported Kernel | Status |
---|---|---|
18.04 | HWE 5.4.0-150-generic | EoL |
20.04 | HWE 5.15.0-119-generic | Supported |
22.04 | HWE 6.5.0-35-generic | Supported |
24.04 | HWE 6.8.0-41-generic | Supported |
IntroVirt is used to introspect a running virtual machine. The current release of IntroVirt supports Windows XP through Windows 10 22H2. Newer versions of Windows 10 may work, but you may experience unhandled exceptions in the user-land tools for changes to the Windows kernel that IntroVirt has not been updated for yet (hopefully soon though). Windows 11 is completely untested...so feel free to give it a try, though it will likely not work.
OS | Latest Supported Version | Status |
---|---|---|
Windows XP | All | EoL |
Windows 7 | All | EoL |
Windows 10 | 22H2 | Supported |
Windows 11 | None | Unsupported (yet) |
First, build and installlibmspdb andkvm-introvirt
Then, build from source:
sudo apt-get install -y \ python3 python3-jinja2 cmake make build-essential libcurl4-openssl-dev libboost-dev \ libboost-program-options-dev git clang-format liblog4cxx-dev libboost-stacktrace-dev \ doxygengit clone https://github.com/IntroVirt/IntroVirt.gitcd IntroVirt/buildcmake ..make -j
Debian packages can then be built and installed (recommended):
make packagesudo apt install ./*.deb
Ormake
can be used directly to install:
sudo make install
Confirm everything is installed with:sudo ivversion
The deps for these steps can be installed with:sudo apt install debhelper devscripts
- If releasing a new version, bump the version number in
CMakeLists.txt
in these linesSET(PACKAGE_MAJOR_VERSION#)SET(PACKAGE_MINOR_VERSION#)SET(PACKAGE_PATCH_VERSION#)
- First copy the distro-specific files into place and update the changelog
export DEBEMAIL="youremail@domain.com"cp ./debian/control.$(lsb_release -c -s2> /dev/null) ./debian/controlcp ./debian/changelog.$(lsb_release -c -s2> /dev/null) ./debian/changelogdch -i# a message about what happenedcp ./debian/changelog ./debian/changelog.$(lsb_release -c -s2> /dev/null)
- To build the
.deb
files./scripts/build_release.sh
- Make sure to
git add -u
andgit commit
the modification to the distro-specific changelog
The included IntroVirt tools have their own usage instructions. See thetools/
folder.
You can try system call monitoring withsudo ivsyscallmon -D <domain>
. Seesudo ivsyscallmon --help
for more information.
IntroVirt provides some useful resources to learn how to use it including:
- Documentation: TBD
- Examples: TBD
- Unit Tests: TBD
If you have any questions, bugs, or feature requests, please feel free to ask on any of the following:
- Chat: TBD
- Issue Tracker:https://github.com/IntroVirt/IntroVirt/issues
If you would like to help:
- Pull Requests:https://github.com/IntroVirt/IntroVirt/pulls
- Contributing Guidelines:https://github.com/IntroVirt/IntroVirt/blob/master/contributing.md
IntroVirt is licensed under the Apache v2.0 License.
Check out ourCan You Hack It?® challenge and test your skills! Submit your score to show us what you’ve got. We have offices across the country and offer competitive pay and outstanding benefits. Join a team that is not only committed to the future of cyberspace, but to our employee’s success as well.
If you’re interested in IntroVirt, you might also be interested in thefollowing projects:
- LibVMI:https://github.com/libvmi/libvmi
- Bitdefender: ttps://github.com/bitdefender
- HVMI:https://github.com/hvmi/hvmi
- libmicrovmi:https://github.com/Wenzel/libmicrovmi
About
IntroVirt is an guest introspection library for KVM
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors5
Uh oh!
There was an error while loading.Please reload this page.