命名管道

第15章 进程间通行 15.5 FIFO

狂风中的少年 提交于 2019-12-09 20:35:20
(1)什么是命名管道,未命名管道? 未命名管道:只能在两个相关的进程之间使用,而且这两个相关的进程还要有一个共同的创建了它们的主先进程。 命名管道:FIFO,不相关的进程也能交换数据。 (2)FIFO是一种文件类型。 创建FIFO类似于创建文件,且FIFO的路径名存在与文件系统中。 (3) 函数mkfifo,mkfifoat创建FIFO,用open打开它(O_NONBLOCK非阻塞标志的影响)。 应用程序可以用mknod和mknodat函数创建FIFO。 (4)FIFO有两种用途。 1)复制一系列shell命令中的输出流。比如需要对一个经过过滤的输入流进行两次(单独)处理。 (通过tee程序实现:此程序将其标准输入同时复制到其标准输出以及其命令行中命名的文件中) 2)使用FIFO进行客户进程-服务器进程通行。 来源: oschina 链接: https://my.oschina.net/u/2463708/blog/518316

进程间通信 IPC interprocess communication

非 Y 不嫁゛ 提交于 2019-12-06 20:09:55
1,管道,FIFO 2, 信号 3,消息队列 4,共享类存 5.文件映射 6.socket ( 1 )管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   ( 2 )命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。   ( 3 )信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。   ( 4 )消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺   ( 5 )共享内存:使得多个进程可以访问同一块内存空间

进程间的通信——pipe通信

萝らか妹 提交于 2019-12-06 06:30:33
进程间的通信分为三种 信号通信,管道通信、socket通信 当进程创建管道文件后,其建立的子进程自动继承该文件。 管道通信分为命名管道和未命名管道,他们的区别是命名管道在当创建他的进程结束后,系统仍存有该文件 管道的命令格式为 pipe(fds) 其中 fds定义为fds[2] fds[0]为读文件描述符,1为写文件描述符 来源: https://www.cnblogs.com/jiangxue2019/p/11965592.html

进程间通信 IPC interprocess communication

做~自己de王妃 提交于 2019-12-06 03:47:21
1,管道,FIFO 2, 信号 3,消息队列 4,共享类存 5.文件映射 6.socket ( 1 )管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。   ( 2 )命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。   ( 3 )信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。   ( 4 )消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺   ( 5 )共享内存:使得多个进程可以访问同一块内存空间

Shellcode 1

99封情书 提交于 2019-12-05 14:57:55
隶属于 360 公司信息安全中心,我们深谙“未知攻,焉知防”,团队成员专注于各类漏洞利用研究,在红蓝对抗、区块链安全、代码审计拥有多年资深经验。 author:boi@360RedTeam 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 0x00 序 在Redteam参与企业安全建设或者红蓝对抗的情况下,我们可能需要利用一些可执行文件来完成既定任务。而随着企业对网络安全主机安全重视程度的提高,目标主机上通常存在一些终端防护软件,为了保证任务能够顺利进行,我们需要对可执行文件进行免杀操作。本篇文章是自己在免杀学习的一些记录,主要着重于基础,通过分析Cobaltstrike Kit中使用的命名管道技术引出几个绕过思路,希望借此抛砖引玉、以攻促防,同时希望能够引起红蓝双方的重视。 毕竟,自己动手,丰衣足食。 0x01 知己知彼 目前的反病毒安全软件,常见有三种,一种基于特征,一种基于行为,一种基于云查杀。云查杀的特点基本也可以概括为特征查杀。 对特征来讲,大多数杀毒软件会定义一个阈值,当文件内部的特征数量达到一定程度就会触发报警,也不排除杀软会针对某个EXP会限制特定的入口函数来查杀。当然还有通过md5,sha1等hash函数来识别恶意软件,这也是最简单粗暴,最容易绕过的。 针对特征的免杀较为好做,可以使用加壳改壳

IPC$ 命名管道

假装没事ソ 提交于 2019-12-03 08:20:32
介绍: IPC$(Internet Process Connection) 是共享 " 命名管道 " 的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。 四种默认共享: 共享名------资源----------------------注解 C$-----------C:------------------------默认共享 D$-----------D:------------------------默认共享 IPC$------------------------------------远程 IPC ADMIN$----C:\WINDOWS---------远程管理 1.创建ipc$连接 net use \\192.168.100.3\ipc$ "password" /user:Administrator 2. 上传自己要上传的文件 abc.txt为当前目录下的文件 copy abc.txt \\192.168.1.131\c$ 3.验证是否连接成功 net time \192.168.1.131 查看ipc连接的主机的当前时间 psexec.exe /accepteula \192.168.1.108 cmd //前提是需要建立一个空连接或者非空连接 psexec

IPC$ 命名管道

匿名 (未验证) 提交于 2019-12-03 00:16:01
介绍: IPC$(Internet Process Connection) 是共享 " 命名管道 " 的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。 四种默认共享: 共享名------资源----------------------注解 C$-----------C:------------------------默认共享 D$-----------D:------------------------默认共享 IPC$------------------------------------远程 IPC ADMIN$----C:\WINDOWS---------远程管理 1.创建ipc$连接 net use \\192.168.100.3\ipc$ "password" /user:Administrator 2. 上传自己要上传的文件 abc.txt为当前目录下的文件 copy abc.txt \\192.168.1.131\c$ 3.验证是否连接成功 net time \192.168.1.131 查看ipc连接的主机的当前时间 psexec.exe /accepteula \192.168.1.108 cmd //前提是需要建立一个空连接或者非空连接 psexec

Linux 命名管道

匿名 (未验证) 提交于 2019-12-02 21:56:30
前文 中笔者介绍了管道,本文接着介绍命名管道。文中演示所用环境为 Ubuntu 18.04 desktop。 命名管道(named pipe)又被称为先进先出队列(FIFO),是一种特殊的管道,存在于文件系统中。命名管道与管道非常类似,但是又有自身的显著特征: 命名管道可以用于任何两个进程间的通信,而不限于同源的两个进程。 命名管道作为一种特殊的文件存放在文件系统中,而不是像管道那样存放在内核中。当进程对命名管道的使用结束后,命名管道依然存在于文件系统中,除非对其进行删除操作,否则该命名管道不会自行消失。 和管道一样,命名管道也只能用于数据的单向传输,如果要用命名管道实现两个进程间数据的双向传输,建议使用两个单向的命名管道。 创建命名管道 在命令行上创建命名管道 可以通过命令行命令 mkfifo 或 mknod 创建命名管道: $ mkfifo /tmp/testp $ mknod /tmp/testp p 可以通过 ls 命令查看命名管道的文件属性: 输出中的第一个字符为 p,表示这个文件的类型为管道。最后的 | 符号是有 ls 命令的 -F 选项添加的,也表示这个一个管道。 在程序中创建命名管道 在程序中创建命名管道,可以使用 mkfifo 函数,其签名如下: #include <sys/types.h> #include <sys/stat.h> int mkfifo

Linux进程间通信 --- IPC机制(转)

余生颓废 提交于 2019-12-02 12:27:58
在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道、消息队列、信号、信号量、共享内存、内存映射文件,套接字等等。使用这些机制可以为linux下的网络服务器开发提供灵活而又坚固的框架。 1. 管道 (PIPE) 管道实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。 管道的特点: 1、管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2、只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。比如fork或exec创建的新进程,在使用exec创建新进程时,需要将管道的文件描述符作为参数传递给exec创建的新进程。当父进程与使用fork创建的子进程直接通信时,发送数据的进程关闭读端,接受数据的进程关闭写端。 3、单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 4、数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾

进程间通信:管道及命名管道(代码实现)

六月ゝ 毕业季﹏ 提交于 2019-11-29 22:12:15
管道:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2.只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 3.单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统, 并且只存在与内存中; 4.数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据; 5.管道通信是于流式符的; 6.管道的生命周期是随进程的; 7.管道已经给进程提供了同步与互斥; pipe: 当一个管道建立时,它会创建两个文件描述符pipefd[0]和pipefd[1]。其中pipefd[0]固定用于读管道,而pipefd[1]固定用于写管道,一般文件I/O的函数都可以用来操作管道。 测试pipe的大小 单独创建一个无名管道,并没有实际的意义。我们一般是在一个进程在由pipe()创建管道后,一般再由fork一个子进程,然后通过管道实现父子进程间的通信(因此也不难推出,只要两个进程中存在亲缘关系,这里的亲缘关系指的是具有共同的祖先,都可以采用管道方式来进行通信)。 代码: 结果: 使用管道需要注意以下4中情况: 1.如果所有指向管道写端的文件描述符没关闭,而持有管道写端的进程也没有向管道中写数据