-
-
[原创][原创]linux猥琐操作Zzz
-
发表于: 2019-3-11 23:06 17106
-
总结一些linux下的猥琐操作
https://github.com/jgamblin/Mirai-Source-Code/blob/master/mirai/bot/killer.c
以下摘自https://blog.csdn.net/enweitech/article/details/53391567
/proc/pid/cmdline 包含了用于开始进程的命令 ;
/proc/pid/cwd包含了当前进程工作目录的一个链接 ;
/proc/pid/environ 包含了可用进程环境变量的列表 ;
/proc/pid/exe 包含了正在进程中运行的程序链接;
/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接;
/proc/pid/mem 包含了进程在内存中的内容;
/proc/pid/stat包含了进程的状态信息;
在linux中,这些文件包含了很多敏感信息
在mirai中,使用readlink读取/proc/pid/exe来获取程序路径,从而判断是敌是友
也可以open /proc/pid/exe 来读取内存,读内存数据判断是敌是友
这些特性也可以用来取证,比如如果readlink /proc/pid/exe,路径中出现(deleted),就是自删除的,那么这个就很可疑,就可以使用cp /proc/pid/exe /tmp/v 把他拷贝出来。更多的特性可以在网上找资料,对linux安全研究有很多帮助。
mirai为了不调用c库函数,自己实现很多c函数
比如util.c中一些库函数,resolv.c中的dns查询
https://github.com/jgamblin/Mirai-Source-Code/blob/master/mirai/bot/resolv.c
linux惯用手法
曾经看过一个udp reverseshell ,感觉linux中用户层隐藏自己的方法都差不多
https://github.com/Churro/portknockd/blob/master/portknockd.c
mirai
调用完后立刻加密,敏感字符串不会一直存留在内存中
做了两处隐藏,看unlock_tbl_if_nodebug中,将table_init函数的调用与argv[0]搅合在一起,让人逆得头疼
二是先注册异常处理函数 signal(SIGTRAP, &anti_gdb_entry);,如果unlock_tbl_if_nodebug(args[0])返回true,才触发异常,然后才间接调用anti_gdb_entry,anti_gdb_entry中为 resolve_func = resolve_cnc_addr;类似windows中的猥琐操作。
这段写的有两个作用,一是必须输入正确的名字才能进行正确的初始化,二是让你看不懂
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课