CN113111384A - 一种防止Linux执行中的进程信息泄露的方法 - Google Patents
一种防止Linux执行中的进程信息泄露的方法 Download PDFInfo
- Publication number
- CN113111384A CN113111384A CN202110435624.6A CN202110435624A CN113111384A CN 113111384 A CN113111384 A CN 113111384A CN 202110435624 A CN202110435624 A CN 202110435624A CN 113111384 A CN113111384 A CN 113111384A
- Authority
- CN
- China
- Prior art keywords
- combination
- path
- sys
- open function
- linux
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 230000026676 system process Effects 0.000 claims abstract description 4
- 238000013507 mapping Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种防止Linux执行中的进程信息泄露的方法,其包括以下步骤:(1)通过kprobes技术挂钩系统内核函数中的do_sys_open函数,判断do_sys_open函数每次打开文件时,其对象的路径是否为/proc/数字组合/*,其中的数字组合是若干个数字的组合,*是通配符,代表任意字符的组合;(2)如果对象的路径不是/proc/数字组合/*,则继续执行do_sys_open函数;(3)如果对象的路径是/proc/数字组合/*,则执行以下步骤:(3.1)提取数字组合,并转换为struct task_struct结构;(3.2)获取task_struct结构中对应的系统进程的全路径;(3.3)判断步骤(3.2)中获得的全路径,若为受保护进程的路径,则修改路径名,以阻止do_sys_open函数的访问;从而阻止系统去读导出的信息,进而起到保护作用。
Description
技术领域
本发明属于软件领域,尤其涉及一种防止Linux执行中的进程信息泄露的方法。
背景技术
程序和程序之间,经常通过命令行方式传递参数,这参数里面可能包含涉密信息。以最常用的VeraCrypt为例其用于加密磁盘,由于Linux本身的“缺陷”,只要VeraCrypt这个进程不退出,是很容易泄露的。比如,执行ps-ef命令,可以很清晰地获取传递的密钥。通过逆向分析类似ps-ef命令,可以发现该类命令,可以发现该命令是从Linux系统的/proc目录下获取信息的。当Linux系统生成一个进程后,如果其他进程想要获取这个进程的信息,通过类似ps的命令获得,系统会把相关的信息导出到这个目录下,造成信息泄露。
发明内容
为了克服上述问题,本发明提供一种在系统试图将受保护进程的信息导出前,阻止其导出的防止Linux进程信息泄露的方法。
本发明的技术方案是提供防止Linux执行中的进程信息泄露的方法,其是一种在Linux操作系统下执行、用以保护特定进程的信息的方法,其特征在于,包括以下步骤:
(1)通过kprobes技术挂钩系统内核函数中的do_sys_open函数,判断do_sys_open函数每次打开文件时,其对象的路径是否为/proc/数字组合/*,其中的数字组合是若干个数字的组合,*是通配符,代表任意字符的组合;
(2)如果对象的路径不是/proc/数字组合/*,则继续执行do_sys_open函数;
(3)如果对象的路径是/proc/数字组合/*,则执行以下步骤:
(3.1)提取所述数字组合,并转换为struct task_struct结构以将所述数字组合转换为数字类型,作为进程ID;
(3.2)在进程队列里面寻找该进程ID,以获取该进程ID对应的全路径;
(3.3)判断步骤(3.2)中获得的全路径,该全路径若为所述特定进程对应的路径,则修改do_sys_open函数的返回路径,使其不同于所述特定进程对应的路径,以保护所述特定进程;否则则正常执行do_sys_open函数。
优选的,所述特定进程是通过命令行执行veracrypt命令的进程,所述特定进程对应的路径为/usr/bin/veracrypt。
优选的,所述步骤(3.1)中,提取数字组合,并转换为struct task_struct结构的方法是:采用kstrtoint函数将进程ID的数据类型从字符串转换为整数。
优选的,所述步骤(3.3)中,修改路径名的方法是将所述数字组合修改为0。
优选的,所述步骤(3.3)中,修改路径名的方法还包括将do_sys_open函数的返回值设为0。
优选的,所述步骤(3.2)中,在进程队列里面寻找该进程ID,以获取该进程ID对应的全路径的方法是,调用系统函数for_each_process来遍历全部的系统进程。
本发明的防止Linux进程信息泄露的方法,预先要知道受保护的进程的映像路径名和文件内容哈希,当导出事件发生时,通过进程ID,获取到进程映像路径名和文件内容哈希,以判断是否是受保护进程的id和其导出路径;从而阻止系统去读导出的信息,进而起到保护作用。
附图说明
图1是本发明的原理示意图。
具体实施方式
下面对本发明的具体实施方式作进一步详细的描述。
如图1所示,一种防止Linux执行中的进程信息泄露的方法,其是一种在Linux操作系统下执行的方法,所述加密命令是通过Linux命令行执行的,包括以下步骤:
(1)Linux操作系统提供了一种叫做kprobes的技术,允许在内核的函数中挂钩(hook)来监视内核的行为。kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术。利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程。kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。通过kprobes技术挂钩系统内核函数中的do_sys_open函数,在其中加入自定义的流程,详见后续的源代码。该流程会判断do_sys_open函数每次打开文件时,其对象的路径是否为/proc/数字组合/*,其中的数字组合是若干个数字的组合,*是通配符,代表任意字符的组合;
(2)如果对象的路径不是/proc/数字组合/*,则继续执行do_sys_open函数;
(3)如果对象的路径是/proc/数字组合/*,则执行以下步骤:
(3.1)提取数字组合,并转换为struct task_struct结构以将所述数字组合转换为数字类型,作为进程ID;
(3.2)在进程队列里面寻找该进程ID,以获取对应的系统进程的全路径;
(3.3)判断步骤(3.2)中获得的全路径,若为加密进程的路径,则修改路径名,以阻止do_sys_open函数的访问。
进一步地,特定进程是通过命令行执行veracrypt命令的进程。用户可通过veracrypt命令进行加密或解密的操作。加密或解密的过程中,其中的密钥信息可通过ps–ef命令等,从系统中获取,从而发生泄密。为保护密钥,则判断步骤(3.2)中获得的全路径是否为VeraCrypt进程的路径:/usr/bin/veracrypt,如是则修改路径名(比如路径是/proc/1234,则把路径改成非法的路径/proc/0,),以阻止访问,达到防止密钥泄露的目的。当然,特定进程也可以是任何其他需要保护的进程。
进一步地,所述步骤(3.1)中,提取数字组合,并转换为struct task_struct结构的方法是:采用kstrtoint函数将进程ID字符串转换为整数。
进一步地,所述数字组合修改为0,所述通配符修改为0。
该方法的最佳实施例的源代码为:
本方法的原理是首先预先要知道受保护的进程的映像路径名和文件内容哈希,当导出事件发生时,通过进程ID,获取到进程映像路径名和文件内容哈希,以知道是受保护进程的id和其导出路径。在系统试图阻止去读导出信息,从而起到保护作用。
以上实施例仅为本发明其中的一种实时方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,再不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种防止Linux执行中的进程信息泄露的方法,其是一种在Linux操作系统下执行、用以保护特定进程的信息的方法,其特征在于,包括以下步骤:
(1)通过kprobes技术挂钩系统内核函数中的do_sys_open函数,判断do_sys_open函数每次打开文件时,其对象的路径是否为/proc/数字组合/*,其中的数字组合是若干个数字的组合,*是通配符,代表任意字符的组合;
(2)如果对象的路径不是/proc/数字组合/*,则继续执行do_sys_open函数;
(3)如果对象的路径是/proc/数字组合/*,则执行以下步骤:
(3.1)提取所述数字组合,并转换为struct task_struct结构以将所述数字组合转换为数字类型,作为进程ID;
(3.2)在进程队列里面寻找该进程ID,以获取该进程ID对应的全路径;
(3.3)判断步骤(3.2)中获得的全路径,该全路径若为所述特定进程对应的路径,则修改do_sys_open函数的返回路径,使其不同于所述特定进程对应的路径,以保护所述特定进程;否则则正常执行do_sys_open函数。
2.根据权利要求1所述的一种防止Linux命令行密钥泄露的方法,其特征在于:所述特定进程是通过命令行执行veracrypt命令的进程,所述特定进程对应的路径为/usr/bin/veracrypt。
3.根据权利要求1所述的一种防止Linux命令行密钥泄露的方法,其特征在于:所述步骤(3.1)中,提取数字组合,并转换为struct task_struct结构的方法是:采用kstrtoint函数将进程ID的数据类型从字符串转换为整数。
4.权利要求1所述的一种防止Linux命令行密钥泄露的方法,其特征在于:所述步骤(3.3)中,修改路径名的方法是将所述数字组合修改为0。
5.权利要求1所述的一种防止Linux命令行密钥泄露的方法,其特征在于:所述步骤(3.3)中,修改路径名的方法还包括将do_sys_open函数的返回值设为0。
6.权利要求1所述的一种防止Linux命令行密钥泄露的方法,其特征在于:所述步骤(3.2)中,在进程队列里面寻找该进程ID,以获取该进程ID对应的全路径的方法是,调用系统函数for_each_process来遍历全部的系统进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110435624.6A CN113111384A (zh) | 2021-04-22 | 2021-04-22 | 一种防止Linux执行中的进程信息泄露的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110435624.6A CN113111384A (zh) | 2021-04-22 | 2021-04-22 | 一种防止Linux执行中的进程信息泄露的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113111384A true CN113111384A (zh) | 2021-07-13 |
Family
ID=76719401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110435624.6A Pending CN113111384A (zh) | 2021-04-22 | 2021-04-22 | 一种防止Linux执行中的进程信息泄露的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113111384A (zh) |
-
2021
- 2021-04-22 CN CN202110435624.6A patent/CN113111384A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7140005B2 (en) | Method and apparatus to test an instruction sequence | |
US7607122B2 (en) | Post build process to record stack and call tree information | |
US7237123B2 (en) | Systems and methods for preventing unauthorized use of digital content | |
US6907396B1 (en) | Detecting computer viruses or malicious software by patching instructions into an emulator | |
US10235520B2 (en) | System and method for analyzing patch file | |
US11159541B2 (en) | Program, information processing device, and information processing method | |
CN101136049B (zh) | 信息处理系统和信息处理方法 | |
US11822654B2 (en) | System and method for runtime detection, analysis and signature determination of obfuscated malicious code | |
US7631356B2 (en) | System and method for foreign code detection | |
CN107690645A (zh) | 使用解释器虚拟机的行为恶意软件检测 | |
RU2723665C1 (ru) | Динамический индикатор репутации для оптимизации операций по обеспечению компьютерной безопасности | |
US7284276B2 (en) | Return-to-LIBC attack detection using branch trace records system and method | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
JPWO2005024630A1 (ja) | 不正コードの防止方法および防止プログラム | |
CN110188547B (zh) | 一种可信加密系统及方法 | |
KR101064164B1 (ko) | 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법 | |
CN109117201B (zh) | 一种程序退出的方法及相关设备 | |
CN110135151B (zh) | 基于lsm与系统调用拦截相配合的可信计算实现系统及方法 | |
JP2006330864A (ja) | サーバ計算機システムの制御方法 | |
EP4016343A1 (en) | Processor arrangement for monitoring control-flow integrity | |
CN113111384A (zh) | 一种防止Linux执行中的进程信息泄露的方法 | |
Petkovic et al. | A host based method for data leak protection by tracking sensitive data flow | |
KR100746944B1 (ko) | 정보 유출 방지 방법 및 정보 유출 방지를 수행하는프로그램이 저장된 기록 매체 | |
CN111832054B (zh) | 一种基于多线程环境的透明加解密方法、系统及存储介质 | |
US20220407695A1 (en) | Electronic device and control method thereof |
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 |