翻译作品之七coding an inbound shell daemon rev. 1.0
一.前言: 【程序编程相关:使用ADOX方便的查询表和字段】【推荐阅读:生成任意位随机数的函数】
【扩展信息:Delphi 消息机制学习笔记 】
本人翻译系列文章,很担心里面出错的地方会误人,不过心里还是有去做一做的,我是通过自己的理解来翻译的,如果我的理解错误了,或许是我不理解的部分也不经意翻译了,那必然会给各位多多少少的误导,所以我在文章后面都附上原文.请想看对照原文来阅读!最主要是自己去理解,不要单看我一家之言.
二.正文: ]先决条件: 这篇论文假定读者已经阅读与理解turncode 安全开发的论文:coding a tcp connect port scanner: step by step written by modular 或者已经有了套接字编程的基础.读者同样应该自然地拥有基础的c编程技术.
]介绍:
在危及一个运行unix系统安全之后与获得root,一个熟练的攻击者将会创建一个后门为将来的进入.这篇论文详细阐明编写一个后门通过分解一个必要的一个入站后门的rootshell代码.编写一个后门后台shell是一个容易的过程.这个程序自身是通常不多于100行.它可能开始去增加当新的函数被增加,例如加密,系统确定,与错误控制. ] 处理认证: 一个进程基本上是一个运行的程序,这个运行的程序有一些基本的属性值得注意: 1.一个程序拥有当前执行的一个众所周知的当前的上下环境的状态. 2.存取文件与目录的权限 3.内存与系统资源 4.当前的工作目录 每个进程有一个进程id与一个父进程id.进程id用实际整数来标示.所有进程的父进程有一个进程号就是1.这是众所周知的init进程,系统从核心启动后,init启动任何必要的系统程序与后台程序.当编写一个后台程序时,理解进程ids是怎样工作在父与子进程之间是重要的.打印一个进程号,对于一个父与子进程需要的函数是getpid() and getppid().虽然,这些函数是不必对于这篇论文最后的程序,但是它会帮助进一步阐明ids进程是怎样工作的,getpid()与 getppid()的原型如下:
---------------------------------------------------------------------------#includepid_t getpid(void);
pid_t getppid(void);---------------------------------------------------------------------------
对于getpid() 与getppid() 原型, unistd.h 头文件是必要的.getpid()返回调用的进程与getppid() 那进程的父进程 象这样:------------------------------------------------------------------------#include #include #includeint main(void)
{ printf("%d\n", getpid()); printf("%d\n", getppid());return 0;
}------------------------------------------------------------------------
]父/子进程:
-进程组
根据早期规定,每个进程有一个进程id.进程能被用一个命令管道来连接,想这样:modular@visioncode:~/src$ ps -aux |grep -v grep |grep user |awk ´{print $2}´ |xargs kill -9一个相关进程组是提供一个进程组id.为了一次杀死所有这些相关进程,脚本必须能结束组id而不是每个进程id.
... 下一页