Code Monkey home page Code Monkey logo

ip_file_hook's Introduction

1. 目录与文件说明

.
├── CMakeLists.txt
├── config.json
├── config.json.in
├── extension_include
│   └── ptrace_tool.h
├── extension_src
│   ├── config.cpp -> ../src/config.cpp
│   ├── expception.cpp -> ../src/expception.cpp
│   ├── format.cpp -> ../src/format.cpp
│   ├── log.cpp -> ../src/log.cpp
│   ├── logger.cpp -> ../src/logger.cpp
│   ├── main.cpp
│   ├── ptrace_tool.cpp
│   └── tool.cpp -> ../src/tool.cpp
├── include
│   ├── config.h
│   ├── exception.h
│   ├── format.h
│   ├── logger.h
│   ├── log.h
│   ├── option.h
│   ├── option.h.in
│   └── tool.h
├── README.md
├── src
│   ├── config.cpp
│   ├── expception.cpp
│   ├── format.cpp
│   ├── libhook.cpp
│   ├── log.cpp
│   ├── logger.cpp
│   └── tool.cpp
└── test
    ├── config.json -> ../config.json
    ├── hook_run.sh
    ├── src
    │   ├── build.sh
    │   ├── connect.c
    │   └── open.c
    ├── test_black_list.txt
    └── test_white_list.txt
  1. srcinclude下为构建共享库的代码文件。

  2. extension_srcextension_include为构建扩展的代码文件。(扩展使用了部分src的代码,以符号链接引入)

  3. test为辅助测试文件,与测试用的config.json配合使用,以符号链接形式引入。

  4. cmake利用config.json.in生成测试用的config.json

2. 构建

依赖:cjson

mkdir build && cd build
cmake ..
cmake --build .

构建成功后build目录下会得到共享库libhook.so和可执行程序static_hook

可选选项(在CMakeLists.txt中修改,或者命令行中-D指定):

  • CONFIG_FILE_PATH 配置文件路径
  • LOG_FILE_PATH 日志文件路径
  • ENABLE_ALLOW_LOG
    • 是否开启ALLOW日志
    • 可选值为truefalse
    • 默认为false
  • ENABLE_DENY_LOG
    • 是否开启DENY日志。
    • 值为truefalse
    • 默认为true

3. 测试与使用

方法一

将编译出的共享库写入/etc/ld.so.preload,并重启进程。

sudo echo `<dir>/build/libhook.so` > /etc/ld.so.preload

方法二

将共享库加入LD_PRELOAD环境变量。

或者以test目录下的hook_run.sh运行。

例如测试cat命令访问白名单测试文件test_white_list.txt

cd test
./hook_run.sh cat test_white_list.txt

配置文件说明

只有在白名单中的程序 才能访问 白名单保护的文件。 只有在黑名单中的程序 不能访问 黑名单保护的文件。

运行时会解析符号链接,找到真正的可执行程序。

注意

  1. shell脚本通过exec调起可执行程序时,可以绕过拦截,所以配置文件中请写入真正的可执行程序,或可执行程序的符号链接。
  2. 测试网络时请关闭代理。且使用无痕浏览模式效果更真实。

除给出示例外,文件拦截可以vimcatcp等进行测试,ip拦截可以谷歌浏览器、pingssh等为例。

BUG

  1. 静态拦截程序static_detect仅作原理展示和可行性验证,实际用处不大。
  2. 获取当前时间时,部分情况为epoch,原因不明。

ip_file_hook's People

Stargazers

obeast avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.