基于VMI的Linux虚拟机系统调用解析

VMI(Virtual Machine Introspection,虚拟机自省),是一种从虚拟机外部对虚拟机内部状态进行监控的技术。基于VMI获取的内存数据并结合通过KVM对VCPU相关信息的获取,实现将该类低级语义转换为系统调用层面的高级语义信息,从而可以一定程度的分析出系统的行为。

有关基于KVM的VMI开发环境部署可参考这篇文章。本文主要记录有关修改KVM源码实现系统调用陷入、对内存数据进行语义转换相关的原理与流程。

阅读全文

虚拟机自省环境搭建

虚拟机自省(Virtual Machine Introspection,简称VMI),是一种从外部(即Hypervisor)对虚拟机内部状态进行监控的技术。从Hypervisor层面,通过虚拟机的陷入,可以直接读取到虚拟机陷入瞬间的内存数据。

部署基于KVM的VMI开发环境主要分为三个部分,分别为KVM、QEMU、LibVMI。前两个是Linux下部署虚拟化的必备组件,LibVMI则是基于各种Hypervisor所实现的VMI库,官网地址https://libvmi.com

阅读全文

L3HCTF 2021 WriteUp

比赛感受:笑死,根本不会做

借用比赛群里发的一个表情包,Golang逆向属实给整麻了属于是

阅读全文

《Black Hat Go》学习笔记(三)

中文翻译版:https://github.com/YYRise/black-hat-go

数据库和文件系统

对SQL数据库的操作

Go使用database/sql包来进行对SQL数据库的操作。不同于Python中对不同数据库使用不同的依赖包和调用不同的方法,Go官方文档中其实是要求开发者都使用database/sql中的方法来进行统一的数据库操作,而要操作不同的数据库则需要导入不同的数据库驱动即可:

To use database/sql you’ll need the package itself, as well as a driver for the specific database you want to use.

You generally shouldn’t use driver packages directly, although some drivers encourage you to do so.(In our opinion, it’s usually a bad idea.) Instead, your code should only refer to types defined in database/sql, if possible. This helps avoid making your code dependent on the driver, so that you can change the underlying driver (and thus the database you’re accessing) with minimal code changes. It also forces you to use the Go idioms instead of ad-hoc idioms that a particular driver author may have provided.

阅读全文

《Black Hat Go》学习笔记(二)

中文翻译版:https://github.com/YYRise/black-hat-go

接下来第六章是讲SMB和NTLM的,但其实原版书里面讲的主要是基于SMB协议数据结构编码和解码的处理方式,对于具体的协议交互方式和算法细节书里只给了个官方文档的名称,但自己也没深入去研究过SMB的东西,所以顺便也把SMB相关的细节都看了一遍,内容比较多,所以单独写一篇记录一下

这一章书里的实战项目实现了一个SMB登录的过程,并且基于此写了个密码爆破程序,所以我的学习过程也是基于这个项目的代码的,地址https://github.com/stacktitan/smb,参考的版本也和书上的一致,为SMB2.1。

首先是一些做参考的文档和RFC:

阅读全文

2021夏令营记录

前言

基本情况:

  • 学校:西南某末流985
  • 专业:软件工程
  • 成绩:48/209(去年保研率16%)+2.5加分,保研边缘
  • 项目:一个国二

由于成绩较为拉垮,所以没有报特别好的学校(还是不去当炮灰了吧)

阅读全文

渗透某培训平台经历

某天工作室小伙伴发了个某学校培训平台的URL给我说有注入,于是我们俩就开始了愉快的渗(mo)透(yu)旅程

0x00 从注入摸到XXE

首先这个站有一个学生登录口和一个管理登录口:

自然是先用学生身份注册一个账号,进去之后到处摸,然后在课程支付的地方找到一个注入点

阅读全文

Tor+Redsocks+iptables实现透明代理

透明代理的意思是:客户端根本不需要知道有代理服务器的存在,只需要配置好网络即可实现代理功能,其经常用于渗透测试中,作用除去本文提到的Tor隐藏IP之外,还可以用于内网渗透,使得主机如同真正处于内网之中一样,使我们的渗透更加方便顺利。

本文的目标场景:一台主机作为网关,在该主机上搭建Tor服务并做好流量转发,实现所有以该主机网关的机器均可以直接访问Tor(不需要任何代理设置)。

由于Tor本质上是个SOCKS代理,所以理论上本文的内容对于所有的SOCKS代理均适用。

阅读全文