CN113792299B - 一种基于ftrace技术的Linux系统保护方法 - Google Patents

一种基于ftrace技术的Linux系统保护方法 Download PDF

Info

Publication number
CN113792299B
CN113792299B CN202111344516.4A CN202111344516A CN113792299B CN 113792299 B CN113792299 B CN 113792299B CN 202111344516 A CN202111344516 A CN 202111344516A CN 113792299 B CN113792299 B CN 113792299B
Authority
CN
China
Prior art keywords
sector
bio
ftrace
read
submit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111344516.4A
Other languages
English (en)
Other versions
CN113792299A (zh
Inventor
吴阳
郑宗义
杜宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Dingyan Information Technology Co ltd
Original Assignee
Nanjing Dingyan Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Dingyan Information Technology Co ltd filed Critical Nanjing Dingyan Information Technology Co ltd
Priority to CN202111344516.4A priority Critical patent/CN113792299B/zh
Publication of CN113792299A publication Critical patent/CN113792299A/zh
Application granted granted Critical
Publication of CN113792299B publication Critical patent/CN113792299B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种基于ftrace技术的Linux系统保护方法,步骤S01:ftrace注册;步骤S02:分析出当前硬盘布局,统计已使用空间和未使用空间,建立表格;步骤S03:获取扇区偏移、扇区数量、是否读写、数据缓冲区基本请求信息;步骤S04:查找表格,判断扇区偏移是不是受保护扇区;是受保护扇区,进入步骤S06;不是受保护扇区,进入步骤S05;步骤S05:查找表格,计算出映射后的扇区位置,调用原始函数读写新扇区位置,实现读写重定向;步骤S06:读写硬盘指定扇区内容。本发明基于一种基于ftrace技术实现了Linux系统的拦截读写、数据重定向、从而使基于Linux的操作系统运行环境安全。

Description

一种基于ftrace技术的Linux系统保护方法
技术领域
本发明涉及计算机技术领域,涉及一种Linux系统保护方法,尤其涉及一种基于ftrace技术的Linux系统保护方法。
背景技术
近年来,随着国产系统的迅速普及,越来越多基于Linux的操作系统使用者激增,例如统信和麒麟操作系统越来越受追捧,各种应用需求也随之蓬勃发展,但对于大多数终端环境,尤其是对于诸如机房、网吧、图书馆等公共环境中使用的开放型计算机设备,由于是提供给不特定对象使用,极容易出现意外操作,导致操作系统损坏、中毒、被安装恶意软件等多种问题。
在Windows操作系统下,微软提供SDK能开发基于磁盘扇区级的数据过滤技术,来实现数据隔离和重定向,以此来保护系统的运行,相比于Windows,Linux没有一个统一的SDK来实现磁盘扇区级的过滤,且目前仍没有比较成熟的磁盘过滤软件。因此,急需提出一种面向Linux系统的拦截读写、数据重定向、实现系统保护方法,以保护基于Linux的操作系统的运行环境安全。
发明内容
1.所要解决的技术问题:
Linux没有一个统一的SDK来实现磁盘扇区级的过滤,且目前仍没有比较成熟的磁盘过滤软件。
2.技术方案:
为了解决以上问题,本发明提供了一种基于ftrace技术的Linux系统保护方法,包括以下步骤:步骤S01:ftrace注册;开机时,内核驱动内核模块mreblk.ko加载,然后通过kallsyms查找目标函数submit_bio在内核中地址,然后初始化ftrace_ops结构,然后使用ftrace_set_filter_ip设置原始目标函数submit_bio的跟踪函数new_submit_bio,最后使用register_ftrace_function向内核注册回调站点;步骤S02:在所述内核模块mreblk.ko首次加载执行时,分析出当前硬盘布局,统计已使用空间和未使用空间,建立表格,命名为MRE_TABLE;步骤S03:new_submit_bio响应到系统读写后,解析bio参数,获取扇区偏移offset、扇区数量、是否读写、数据缓冲区基本请求信息;步骤S04:查找表格MRE_TABLE,判断offset是不是受保护扇区,offset不是受保护扇区进入步骤S06;offset是受保护扇区,进入步骤S05;步骤S05:查找表格MRE_TABLE,计算出映射后的新扇区位置,用新扇区偏移重新构造读写请求,调用原始目标函数submit_bio读写新扇区位置,实现读写重定向;步骤S06:读写硬盘指定扇区内容。
在步骤S03中,系统发生硬盘读写,块设备层驱动模块响应submit_bio函数执行设备读写请求,内核ftrace框架模块自动判断submit_bio函数是否被Hook,没有Hook则直接读写物理设备,如果submit_bio已经被Hook,则会跳转到内核驱动mreblk.ko中注册的新函数new_submit_bio执行。
所述硬盘指定扇区,在读请求或写请求不是保护扇区的情况下为原始位置;在读请求或写请求需要重定向的情况下为映射后的位置。
在步骤S04中,判断offset是不是受保护扇区的判断方法为:在表格MRE_TABLE中查找,offset是属于未使用空间内则为扇区不在受保护区间内;offset是属于已使用空间内,则扇区在受保护区间内。
在步骤S05中,重新构造读请求的方法为:步骤S51:在表格MRE_TABLE中查找当前硬盘未使用的空间,分配给当前待请求扇区使用,计算出映射后的扇区偏移offset2;步骤S52:使用bio_alloc申请一个新的块结构bio2;步骤S53填充new_bio结构;步骤S54:然调用原始函数submit_bio,读取出新位置offset2的扇区内容buffer2,填充到读写缓冲区buffer,完成读请求。
在步骤S05中,重新构造读写请求的方法为:步骤S61:在表格MRE_TABLE中查找当前硬盘未使用的空间,分配给当前待请求扇区使用,计算出映射后的扇区偏移offset2;步骤S62:使用bio_alloc申请一个新的块结构bio2;步骤S63:使用alloc_page申请新的内存页,用于存储数据内容;步骤S64:填充bio2结构;步骤S65:为bio2添加内存页,完成数据内容拷贝;步骤S66:然后调用原始函数submit_bio,将原本要写入offset位置的内容,写到offset2位置,完成写请求。
3.有益效果:
本发明基于一种基于ftrace技术实现了Linux系统的拦截读写、数据重定向、从而使基于Linux的操作系统运行环境安全。
附图说明
图1是ftrace的注册流程图。
图2是系统读写拦截流程图。
图3是系统保护流程图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明。
本发明中:ftrace-Function Trace-主要用于记录内核函数运行轨迹;kallsyms-Linux内核函数,完成函数地址抽取+数据块组织封装功能的相关子系统;ftrace_ops-ftrace的数据结构体,用于注册回调函数;new_submit_bio-内核函数;register_ftrace_function-Linux内核函数,该函数的主要功能就是把新的Hook函数加入到 ftrace_ops_list 链表中;offset-硬盘物理扇区偏移位置;bio_alloc- Linux内核函数,申请块设备读写对象。
如图3所示,一种基于ftrace技术的Linux系统保护方法,包括以下步骤:步骤S01:ftrace注册;如图1所示,开机时,内核驱动内核模块mreblk.ko加载,然后通过kallsyms查找目标函数submit_bio在内核中地址,然后初始化ftrace_ops结构,然后使用ftrace_set_filter_ip设置原始函数submit_bio的跟踪函数new_submit_bio,最后使用register_ftrace_function向内核注册回调站点。
其中new_submit_bio主要有四个流程,流程一:解析块数据bio结构参数->是读请求->不需要重定向->直接读取原始位置内容->返回;流程二:解析块数据bio结构参数->是读请求->需要重定向->读取映射位置内容->填充到原始数据缓冲区->返回;流程三:解析块数据bio结构参数->是写请求->不需要重定向->直接将内容写入到原始位置->返回;流程四:解析块数据bio结构参数->是写请求->需要重定向->将原始内容写入到映射后的位置->返回。
ftrace是Function Trace的意思,最开始主要用于记录内核函数运行轨迹,随着功能的逐渐增加,已经演变成一个标准跟踪框架,从Linux2.6.27内核开始,已经成为Linux内核的默认特性。本发明即采用了ftrace驱动程序框架,来跟踪和替换内核级函数的调用流程,实现拦截系统读写的功能,基于此框架,将大幅缩减开发难度和工作量。
步骤S02:在所述内核模块mreblk.ko首次加载执行时,分析出当前硬盘布局,统计已使用空间和未使用空间,建立表格,命名为MRE_TABLE。在一个实施例中,new_submit_bio传入以下的参数,用于解析出待真实读写的硬盘设备:待真实读写的硬盘设备disk=bio->bi_disk;是读请求 is_read=(bio_op(bio) == REQ_OP_READ);扇区位置offset=bio->bi_iter.bi_sector;扇区数量count= bio_sectors(bio);读写缓冲区buffer=bio_for_each_segment(bvec, bio, iter)。
根据offset对应的扇区位置,查找表格MRE_TABLE,如果这个扇区不在受保护区间内,则不做处理,直接调用原始submit_bio完成系统读写请求,如果这个扇区在受保护区间内,重新构造读写请求,完成重定向。
submit_bio是Linux标准的内核级函数,其传入参数bio,包含了磁盘读写的基本信息:磁盘设备对象、读写标志、读写扇区偏移、数据存放缓冲区,利用此参数,可以轻松获取系统即将要读写的位置和内容,为数据重定向步骤提供了必要的输入信息。
步骤S03:new_submit_bio响应到系统读写后,解析bio参数,获取扇区偏移offset、扇区数量、是否读写、数据缓冲区基本请求信息。系统发生硬盘读写时,就对一些数据进行拦截,如图2所示,具体过程为:块设备层驱动模块响应submit_bio函数执行设备读写请求,内核ftrace框架模块会自动判断submit_bio函数是否被Hook,没有Hook则直接读写物理设备,如果submit_bio已经被Hook,则会跳转到内核驱动mreblk.ko中注册的新函数new_submit_bio执行。
ftrace框架内部会自行维护一个全局的哈希链表,当第三方驱动程序调用ftrace_set_filter_ip注册回调站点时,ftrace会将原始函数(submit_bio)的插入到链表,并增加引用计数,完成动态插桩过程,当系统触发函数调用时,ftrace会遍历哈希链表,如果链表中有记录(即被HOOK),将先执行新的回调函数(new_submit_bio),此过程为Linux系统中ftrace的默认流程,对第三方开发者来说完全透明,不用关心其具体实现细节,对开发者来说极其友好。
步骤S04:查找表格MRE_TABLE,判断offset是不是受保护扇区;offset不是受保护扇区,进入步骤S06;offset是受保护扇区,进入步骤S05;步骤S05:查找表格MRE_TABLE,计算出映射后的扇区位置,用新的扇区偏移重新构造读写请求,调用原始submit_bio函数读写新扇区位置,实现读写重定向;步骤S06:读写硬盘指定扇区内容。
其中,在步骤S04中,判断offset是不是受保护扇区的判断方法为:在表格MRE_TABLE中查找,offset是属于未使用空间内,则为扇区不在受保护区间内;offset是属于已使用空间内,则扇区在受保护区间内。
所述硬盘指定的扇区,在读请求或写请求不是保护扇区的情况下为原始位置;在读请求或写请求需要重定向的情况下为映射后的位置。
bio_alloc是Linux系统默认内核函数,利用此函数,可以完成对任意磁盘设备、任意扇区位置、任意扇区数量的块数据读写,本发明也是利用此内核函数,完成读写请求的重新构造过程。

Claims (4)

1.一种基于ftrace技术的Linux系统保护方法,包括以下步骤:步骤S01:ftrace注册:开机时,内核驱动内核模块mreblk.ko加载,然后通过kallsyms查找目标函数submit_bio在内核中地址,然后初始化ftrace_ops结构,然后使用ftrace_set_filter_ip设置原始目标函数submit_bio的跟踪函数new_submit_bio,最后使用register_ftrace_function向内核注册回调站点;步骤S02:在所述内核模块mreblk.ko首次加载执行时,分析出当前硬盘布局,统计已使用空间和未使用空间,建立表格,命名为MRE_TABLE;步骤S03:new_submit_bio响应到系统读写后,解析bio参数,获取扇区偏移offset、扇区数量、是否读写;步骤S04:查找表格MRE_TABLE,判断offset是不是受保护扇区,offset不是受保护扇区进入步骤S06;offset是受保护扇区,进入步骤S05;步骤S05:查找表格MRE_TABLE,计算出映射后的新扇区位置,用新扇区偏移重新构造读写请求,调用原始目标函数submit_bio读写新扇区位置,实现读写重定向;重新构造读请求的方法为:步骤S51:在表格MRE_TABLE中查找当前硬盘未使用的空间,分配给当前待请求扇区使用,计算出映射后的扇区偏移offset2;步骤S52:使用bio_alloc申请一个新的块结构bio2;步骤S53:填充new_bio结构;步骤S54:调用原始函数submit_bio,读取出新位置offset2的扇区内容buffer2,填充到读写缓冲区buffer,完成读请求;重新构造写请求的方法为:步骤S61:在表格MRE_TABLE中查找当前硬盘未使用的空间,分配给当前待请求扇区使用,计算出映射后的扇区偏移offset2;步骤S62:使用bio_alloc申请一个新的块结构bio2;步骤S63:使用alloc_page申请新的内存页,用于存储数据内容;步骤S64:填充bio2结构;步骤S65:为bio2添加内存页,完成数据内容拷贝;步骤S66:调用原始函数submit_bio,将原本要写入offset位置的内容,写到offset2位置,完成写请求;步骤S06:读写硬盘指定扇区内容。
2.如权利要求1所述的方法,其特征在于:在步骤S03中,系统发生硬盘读写,块设备层驱动模块响应submit_bio函数执行设备读写请求,内核ftrace框架模块自动判断submit_bio函数是否被Hook,没有Hook则直接读写物理设备,如果submit_bio已经被Hook,则会跳转到内核驱动mreblk.ko中注册的跟踪函数new_submit_bio执行。
3.如权利要求1所述的方法,其特征在于:所述硬盘指定扇区,在读请求或写请求不是保护扇区的情况下为原始位置;在读请求或写请求需要重定向的情况下为映射后的位置。
4.如权利要求1-3任一项权利要求所述的方法,其特征在于:在步骤S04中,判断offset是不是受保护扇区的判断方法为:在表格MRE_TABLE中查找,offset是属于未使用空间内则为扇区不在受保护区间内;offset是属于已使用空间内,则扇区在受保护区间内。
CN202111344516.4A 2021-11-15 2021-11-15 一种基于ftrace技术的Linux系统保护方法 Active CN113792299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111344516.4A CN113792299B (zh) 2021-11-15 2021-11-15 一种基于ftrace技术的Linux系统保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111344516.4A CN113792299B (zh) 2021-11-15 2021-11-15 一种基于ftrace技术的Linux系统保护方法

Publications (2)

Publication Number Publication Date
CN113792299A CN113792299A (zh) 2021-12-14
CN113792299B true CN113792299B (zh) 2022-02-15

Family

ID=78955164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111344516.4A Active CN113792299B (zh) 2021-11-15 2021-11-15 一种基于ftrace技术的Linux系统保护方法

Country Status (1)

Country Link
CN (1) CN113792299B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114462026B (zh) * 2021-12-31 2022-11-18 北京亿赛通科技发展有限责任公司 密文进程监控方法、装置、设备及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100464314C (zh) * 2006-03-23 2009-02-25 联想(北京)有限公司 一种数据透明保护的安全写系统和方法
CN100573480C (zh) * 2008-02-29 2009-12-23 中国科学院计算技术研究所 一种磁盘数据保护方法和系统

Also Published As

Publication number Publication date
CN113792299A (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
RU2640300C2 (ru) Движок интроспекции памяти для защиты целостности виртуальных машин
US8516589B2 (en) Apparatus and method for preventing virus code execution
US9178900B1 (en) Detection of advanced persistent threat having evasion technology
US20080059726A1 (en) Dynamic measurement of an operating system in a virtualized system
CN105393255A (zh) 用于虚拟机中的恶意软件检测的过程评估
RU2580016C1 (ru) Способ передачи управления между областями памяти
CN109960597B (zh) 一种应用层接口的动态注册方法及相关装置
CN114327777B (zh) 确定全局页目录的方法、装置、电子设备及存储介质
US20080028180A1 (en) Inappropriate access detector based on system segmentation faults
CN111666586A (zh) 共享库文件模拟方法、装置、计算机设备及存储介质
CN111800490A (zh) 获取网络行为数据的方法、装置及终端设备
CN108898012B (zh) 检测非法程序的方法和装置
CN113792299B (zh) 一种基于ftrace技术的Linux系统保护方法
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
RU2634172C1 (ru) Способ передачи управления между адресными пространствами
US7296138B1 (en) Method and apparatus to hook shared libraries across all processes on windows
CN116737526A (zh) 一种代码段动态度量方法、装置及电子设备
JP2022064320A (ja) バッファオーバーフロートラッピングのための方法、システムおよびコンピュータプログラム製品(バッファオーバーフロートラッピング)
KR102122968B1 (ko) 애플리케이션 설치 정보 분석 시스템 및 방법
CN110633210A (zh) 文件执行方法、装置、存储介质和电子设备
JP2007510237A (ja) デバイスに特権モードフックの動的な登録のためのシステム
CN113127148B (zh) 一种虚拟化环境主动动态度量方法和系统
CN114638004B (zh) 一种数据保护方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant