研究如何使用IPCDump在Linux上跟踪进程间通信

IPCDump是一款开源工具,用于Linux系统中跟踪进程间通信(IPC),支持多种通信机制,如管道、FIFO、Unix套接字等。它利用BPF和gobpf技术,有助于研究人员和开发者理解和调试多进程应用。本文介绍了其功能、使用方法和所需环境。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7ZXIPzo-1693067042751)(https://image.3001.net/images/20210428/1619610514_60894b924d39bd1c62819.png!small)]

IPCDump

IPCDump这款工具可以帮助广大研究人员在Linux操作系统上跟踪进程间通信(IPC)。该工具覆盖了大多数常见的IPC机制,比如说管道、FIFO、Unix套接字、基于环回的网络和伪终端等等。

该工具有助于研究和调试多进程引用程序,而且还可以帮助了解操作系统通信过程中不同组件之间的关联。IPCDump可以跟踪此通信的元数据和内容,它特别适合在短生命周期的进程之间跟踪IPC,而这种任务对于传统的调试工具来说比较困难,如strace或gdb。它还有一些基本的过滤功能,可以帮助你筛选大量的事件。IPCDump收集的大部分信息来自放置在内核中关键函数的kprobes和跟踪点上的BPF钩子。为此,IPCDump使用了gobpf,它可以为bcc框架提供Golang绑定功能。

功能介绍

  • 支持管道和FIFO;
  • 回环IPC;
  • 信号(常规和实时);
  • Unix流和数据图表;
  • 基于伪终端的IPC;
  • 基于进程PID或进程名的事件过滤器;
  • 可读性高或JSON格式的输出数据;

工具要求&使用

  • Golang >= 1.15.6

已测试平台和内核

软件版本

|

Ubuntu 18.04 LTS

|

Ubuntu 20.04 LTS

—|—|—

4.15.0

|

已测试

|

未测试

5.4.0

|

未测试

|

已测试

5.8.0

|

未测试

|

已测试

工具构建

依赖组件

首先,我们需要安装Golang:

snap install go --classic

接下来,在操作系统上安装好BCC即可。

构建IPCDump

git clone https://github.com/guardicore/IPCDump

cd IPCDump/cmd/ipcdump

go build

工具使用

./ipcdump -h

Usage of ./ipcdump:

  -B uint

        max number of bytes to dump per event, or 0 for complete event (may be large). meaningful only if -x is specified.

  -D value

        filter by destination comm (can be specified more than once)

  -L    do not output lost event information

  -P value

        filter by comm (either source or destination, can be specified more than once)

  -S value

        filter by source comm (can be specified more than once)

  -c uint

        exit after <count> events

  -d value

        filter by destination pid (can be specified more than once)

  -f string

        <text|json> output format (default is text) (default "text")

  -p value

        filter by pid (either source or destination, can be specified more than once)

  -s value

        filter by source pid (can be specified more than once)

  -t value

        filter by type (can be specified more than once).

        possible values: a|all  k|signal  u|unix  ud|unix-dgram  us|unix-stream  t|pty  lo|loopback  lt|loopback-tcp  lu|loopback-udp  p|pipe

  -x    dump IPC bytes where relevant (rather than just event details).

One-liner

以Root权限运行:

# 导出目标系统中所有的IPC

./ipcdump

 

# 导出任意两个进程间的通信信号

./ipcdump -t kill

 

# 导出跟PID 1337相关的所有回环TCP连接

./ipcdump -t loopback-tcp -p 1337

 

# 导出Unix套接字IPC元数据和内容

./ipcdump -t unix -x -S Xorg

 

# 导出JSON格式的管道I/O元数据和前64字节的数据内容

./ipcdump -t pipe -x -B 64 -f json

项目地址

IPCDump: https://github.com/guardicore/IPCDump

参考资料

  • https://www.guardicore.com/labs/ipcdump-guardicores-new-open-source-tool-for-linux-ipc-inspection/
  • https://github.com/iovisor/gobpf
  • https://github.com/iovisor/bcc
  • https://golang.org/dl/
  • https://github.com/iovisor/bcc/blob/master/INSTALL.md

or-linux-ipc-inspection/

  • https://github.com/iovisor/gobpf
  • https://github.com/iovisor/bcc
  • https://golang.org/dl/
  • https://github.com/iovisor/bcc/blob/master/INSTALL.md

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值