• 近期工作---Linux下基于Cuckoo沙箱的API适配问题


    具体步骤:

    (1)寻找对应API

    在Cuckoo系统上运行发现:OpenFile对应的底层API为NtCreateFile

    (2)对比确定对应参数

    OpenFile和NtCreateFile,两者的API情况如下所示:

    OpenFile

     

    NtCreateFile      

     

    从关键函数表中00|02|03||,可以获知我们所关心的OpenFile API的参数为文件的名称lpFileName,要执行的动作uStyle,函数的返回值。根据这三项从NtCreateFile中查找,可以初步确定其对应参数为ObjectAttributes,CreateOptions,FileHandle。

    (3)进一步调整适配参数

    经对比OpenFile中关键参数在NtCreateFile中对应的参数情况来看,调整为00|02|08||。

    (4)修改规则表格

    首先,修改关键函数表,将原API替换为新API,即OpenFile替换为NtCreateFile;

    其次,修改关键参数,将原先以数字作为序号的标志方法修改为以参数的键名作为标志,即将00|02|03修改为FileName| CreateOptions |FileHandle;

    再次,修改参数转化规则,02 |uStyle|03|retval||修改成CreateOptions|uStyle;

    接着,修改构建辅助规则,03|00|Handle||修改成FileHandle|FileName|FileHandle;

    对于OpenFile这一API而言,需要进一步修改参数转换表,参考wdm.h文档,添加uStyle这一转换规则,内容如下,:

     

    最后,修改行为模板表,将其所构成的file_open行为的PARAMDESCRIPTION项的path|type|retvalue||修改为FileName|CreateOptions|FileHandle||,对应地将CHSDESCRIPTION的内容“路径|打开方式|返回值||”修改为与PARAMDESCRIPTION内容对应,即“文件名|打开方式|文件句柄||”。最后,将EXTSTRINGINDEX项中的索引修改为键值FileName。

    至此,第一部分修改结束。

    (5)修改Cuckoomon代码

    接下来修改Cuckoo的源代码,因为要保证Cuckoo中该API的相关参数是已HOOK的,在Cuckoomon的源代码中找到该API:

     

     

    可以看到,我们需要的参数分别为ObjectAttributes,CreateOptions,FileHandle均有记录。

    (6)进行测试

  • 相关阅读:
    VScode 修改中文字体
    missing KW_END at ')' near '<EOF>'
    SQL inner join, join, left join, right join, full outer join
    SQL字符替换函数translater, replace
    SQL COOKBOOK SQL经典实例代码 笔记第一章代码
    sqlcook sql经典实例 emp dept 创建语句
    dateutil 2.5.0 is the minimum required version python
    安装postgresql后找不到服务 postgresql service
    Postgres psql: 致命错误: 角色 "postgres" 不存在
    【西北师大-2108Java】第十六次作业成绩汇总
  • 原文地址:https://www.cnblogs.com/xiaodi914/p/5318779.html
Copyright © 2020-2023  润新知