Linux 模拟基于进程的隐蔽通道(修改文件名)
Linux 模拟基于进程的隐蔽通道(修改文件名)
目录
- Linux 模拟基于进程的隐蔽通道(修改文件名)
- 实验要求
- 实验步骤
- 流程图
- 具体代码
- 文件监听程序(process_p2.c)
- 文件修改程序(process_root.c)
- 实验结果
- 总结
实验要求
- 设定两个不同安全级别的Linux用户,如root和user;
- 用root用户建立一个文件A;使用访问控制命令(普通Linux的安全命令,或SELinux的命令都可以),使root对A具有wr权限,任何其他用户都不具备wr权限;
- 用root用户在A中写入“秘密信息”(仿真实验,信息不要太长,一句话就可以)
- 使用访问控制命令,使得user用户对A所在的目录具备r权限;
- 假设系统中有这样的安全规则:
root用户不能向其他用户发送消息;
凡是root用户创建的文件对象(目录除外),user都不能读取; - 设计一种基于文件名修改的有隐通道,使得root用户将秘密信息泄露给user用户,但不违反既定安全规则。
- 要求编程实现上述过程(C或C++)(用编程实现步骤6),这是最低要求,其实2)、4)、6)都是可以的。);推荐使用多个C文件组成的工程,练习一下Linux环境下程序工程的编写方法。
- 通过编程,以进程的形式,模拟root和user的行为:root创建的进程代表root,user创建的进程代表user;或者,用root创建两个进程,一个模拟root,一个模拟user;但无论哪种方式,都必须遵守既定安全规则。
实验步骤
1、 使用root用户和user用户模拟隐蔽通道的高级用户和低级用户;
2、 修改user用户对root用户目录的访问权限,使其只能读root用户的指定目录,而不能读写文件;
3、 由root用户创建文件A.txt,模拟机密文件(内容为password:12345678);
4、 在root用户目录下编写修改文件名的程序process_root.c;
5、 在user用户目录下编写监听root用户目录的程序process_p2.c;
6、 通过ssh远程登陆user(planetrt2),进入用户目录,编译运行监听程序process_p2.c,使user当前处于监听状态;
7、 在root用户目录下编译运行修改文件名程序process_root.c,依次读取固定长度的A.txt文件内容,并将文件名修改为读取的内容;
8、 此时user(planetrt2)的监听程序就会依次输出A.txt文件每次修改后的文件名,即在对A.txt文件没有读权限的时候,获取文件中的内容。
流程图
具体代码
文件监听程序(process_p2.c)
#include <stdio.h>
#include <sys/inotify.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>int main(void){struct inotify_event *event;int fd = inotify_init();char *path ="/home/test_A/A.txt";int wd;wd = inotify_add_watch(fd,"/home/test_A/",0x00000080);if(wd < 0){printf("%s\n","wd_failed");}int len = 0;char buf[BUFSIZ];buf[sizeof(buf) - 1] = 0;int index;while((len = read(fd,buf,sizeof(buf) - 1)) > 0){index = 0;while(len > 0){event = (struct inotify_event *)&buf[index];if(event->mask & 0x00000080){char str[30] = "/home/test_A/";strcat(str,event->name);printf("%s\n",str);}index = index + sizeof(struct inotify_event) + event->len;len = len - sizeof(struct inotify_event) - event->len;}}return 0;
}
文件修改程序(process_root.c)
#include <stdio.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>int main(void){FILE *fp;fp = fopen("/home/test_A/A.txt","r");char str[20];char s[10] = "A.txt"; while(fgets(str,4,fp)){printf("%s\n",str);char sh1[30] = "/home/test_A/";char sh2[30] = "/home/test_A/";strcat(sh1,str);strcat(sh1,".txt");strcat(sh2,s);rename(sh2,sh1);strcat(str,".txt");strcpy(s,str);}fclose(fp);return 0;
}
实验结果
编译运行文件监听程序(process_p2.c),此时处于监听状态:
编译运行文件修改程序(process_root.c):
观察文件监听程序的输出是否与原A.txt中的信息相符“
总结
本实验为本人课内实验,如有错误,欢迎指正!
Linux 模拟基于进程的隐蔽通道(修改文件名)相关推荐
- Linux下批量修改文件名(rename)
1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...
- linux shell rename,linux shell rename命令修改文件名
1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...
- LINUX修改文件名rename
1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...
- linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法
vnc的默认端口是自己配置的,并不是这有一个端口号. 通过打开/etc/sysconfig/vncservers. 这里就配置了2个桌面,一个桌面号是1, 一个是2. 这里的配置的参数 VNCSERV ...
- (9)隐蔽通道重点知识复习笔记
1. 隐蔽通道的概念: (1)85版定义:隐蔽信道是允许进程以违反系统安全策略的方式传递信息的信道. (2)93版定义:"给定一个强制安全策略模型M及其在一个操作系统中的解释I(M) ...
- Linux操作系统下进程讲解(史上最强总结)
Linux操作系统下进程讲解 一.进程的基本概念: 1. 什么是进程 在传统的操作系统中,程序不可以独立的运行,作为资源分配和独立运行的基本单位都是进程.进程的定义是一个可执行中程序的实例,系统中每一 ...
- 【转载,整理】Linux模拟试题及答案(全)+经典Linux系统工程师面试题(附答案)
转自:http://www.ha97.com/871.html http://www.ha97.com/870.html 2010-6 11 经典Linux系统工程师面试题(附答案) 发表于: L ...
- 【Erlang/OTP入门】基于进程的并发编程和分布式
引言 在参加区统考的前一天开始写这篇文章,开学后时间真的紧迫了很多. 我最近玩Erlang只是一个偶然(?).这一切的开始是我某天看到一本名为<Erlang and OTP in Actio ...
- linux父进程和子进程查看,linux查看父子进程
python多进程代码 test.py #coding=utf-8 import multiprocessing import time def func(msg): print "msg: ...
最新文章
- 深度报告:一文看懂生物芯片产业
- 请问如何更改dedecms“文件保存目录”的字符限制 ?
- Windows下使用gvim
- 什么是超融合数据中心网络?
- navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入
- 【图文详解】在电脑中打开.properties配置文件时会生成一个空的名为Java的文件问题
- [渝粤教育] 中国地质大学 地球科学概论 复习题 (2)
- C++ 高级篇(三)—— 出错处理
- 搜索算法(一)--DFS/BFS求解拯救同伴问题(JAVA)
- 新DELL服务器在F2设置界面下raid的配置
- c语言源程序总是由一个或多个函数组成,2016年中山大学卡内基梅隆大学C语言程序设计复试笔试仿真模拟题...
- python爬虫案例——python爬取百度新闻RSS数据
- plsql 破解注册码
- 浅谈vocaloid3基础操作
- cmos与非门电路、或非门电路
- 2017-09-04考试情况总结
- easyui combobox 查询传递json对象
- 轻快PDF阅读器在线使用方法
- 考研数据结构之数组(5.1)——练习题之移动数组所有非零元素到数组前端(C表示)
- Cesium中的相机—旋转矩阵