扇区asp木马

asp木马  时间:2021-04-04  阅读:()
高级木马之Grub篇CoolQ主要内容主要内容前言Grub的启动过程装载指定文件的可能性技术细节应用检测注意,本文的环境是Linux/Ext2/3前言前言1989年出现了第一个木马修改utmp,wtmp和lastlog,躲避who,w,last命令LRK4/LRK5替换用户态程序,例如ps,ls,netstat…knark/adore/adore-ng内核模块形式,针对2.
2/2.
4/2.
6SuckIT通过/dev/kmem模块注入技术静态内核补丁还有什么地方没有考虑还有什么地方没有考虑BootLoader!
GrubLilo.
.
.
GrubGrub的启动过程的启动过程综述stage1stage1stage1.
S大小512字节位于MBR或者分区的启动扇区里具体的工作将指定扇区(stage2_sector)装载到0200:0000如果配置stage1.
50800:0000如果没配置stage1.
5stage1.
5stage1.
5和和stage2stage2-rw-r--r--1rootroot82Feb511:24device.
map-rw-r--r--1rootroot10848Feb511:24e2fs_stage1_5-rw-r--r--1rootroot9744Feb511:24fat_stage1_5-rw-r--r--1rootroot8864Feb511:24ffs_stage1_5-rw-------1rootroot800Jun614:53grub.
conf-rw-------1rootroot800Jun614:53menu.
lst-rw-r--r--1rootroot9248Feb511:24minix_stage1_5-rw-r--r--1rootroot12512Feb511:24reiserfs_stage1_5-rw-r--r--1rootroot54044Sep520:01splash.
xpm.
gz-rw-r--r--1rootroot108328May2314:21stage2-rwxr-xr-x1rootroot512May2213:31stage1-rw-r--r--1rootroot8512Feb511:24vstafs_stage1_5文件列表编译过程编译过程e2fs_stage1_5:gcc-oe2fs_stage1_5.
exec-nostdlib-Wl,-N-Wl,-Ttext-Wl,2000e2fs_stage1_5_exec-start.
oe2fs_stage1_5_exec-asm.
oe2fs_stage1_5_exec-common.
oe2fs_stage1_5_exec-char_io.
oe2fs_stage1_5_exec-disk_io.
oe2fs_stage1_5_exec-stage1_5.
oe2fs_stage1_5_exec-fsys_ext2fs.
oe2fs_stage1_5_exec-bios.
oobjcopy-Obinarye2fs_stage1_5.
exece2fs_stage1_5编译过程编译过程((续续))Stage2gcc-opre_stage2.
exec-nostdlib-Wl,-N-Wl,-Ttext-Wl,8200pre_stage2_exec-asm.
opre_stage2_exec-bios.
opre_stage2_exec-boot.
opre_stage2_exec-builtins.
opre_stage2_exec-common.
opre_stage2_exec-char_io.
opre_stage2_exec-cmdline.
opre_stage2_exec-disk_io.
opre_stage2_exec-gunzip.
opre_stage2_exec-fsys_ext2fs.
opre_stage2_exec-fsys_fat.
opre_stage2_exec-fsys_ffs.
opre_stage2_exec-fsys_minix.
opre_stage2_exec-fsys_reiserfs.
opre_stage2_exec-fsys_vstafs.
opre_stage2_exec-hercules.
opre_stage2_exec-serial.
opre_stage2_exec-smp-imps.
opre_stage2_exec-stage2.
opre_stage2_exec-md5.
oobjcopy-Obinarypre_stage2.
execpre_stage2catstartpre_stage2>stage2文件结构文件结构e2fs_stage1_5[start.
S][asm.
S][common.
c][char_io.
c][disk_io.
c][stage1_5.
c][fsys_ext2fs.
c][bios.
c]stage2[start.
S][asm.
S][bios.
c][boot.
c][builtins.
c][common.
c][char_io.
c][cmdline.
c][disk_io.
c][gunzip.
c][fsys_ext2fs.
c][fsys_fat.
c][fsys_ffs.
c][fsys_minix.
c][fsys_reiserfs.
c][fsys_vstafs.
c][hercules.
c][serial.
c][smp-imps.
c][stage2.
c][md5.
c]其中start.
S就是stage1装载的扇区,512Bstart.
Sstart.
S的扇区列表的扇区列表blocklist_default_start:.
long2/*thisisthesectorstartparameter,inlogicalsectorsfromthestartofthedisk,sector0*/blocklist_default_len:/*thisisthenumberofsectorstoread*/#ifdefSTAGE1_5.
word0/*thecommand"install"willfillthisup*/#else.
word(STAGE2_SIZE+511)>>9#endifblocklist_default_seg:#ifdefSTAGE1_5.
word0x220#else.
word0x820/*thisisthesegmentofthestartingaddresstoloadthedatainto*/#endiffirstlist:/*thislabelhastobeafterthelistdata!
!
!
*/一个例子一个例子#hexdump-x-n512/boot/grub/stage2.
.
.
00001d0[0000000000000000][0000000000000000]00001e0[62c7002600641600][62af002600101400]00001f0[6287002600201000][61d00026003f0820]我们应该从后往前看,每次8个字节将从0x2661d0扇区开始的0x3f个扇区装载到从0820:0000开始的内存中将从0x266287扇区开始的0x20个扇区装载到从1000:0000开始的内存中将从0x2662af扇区开始的0x10个扇区装载到从0x1400:0000开始的内存中将从0x2662c7扇区开始的0x64个扇区装载到从0x1600:0000开始的内存中有了这个列表,stage1.
5就不需要依靠文件系统来装载自己了stage1.
5stage1.
5与与stage2stage2的关系的关系如果配置了stage1.
5,stage1首先将stage1.
5的第一个扇区(start.
S)读入内存,依靠start.
s的扇区列表将stage1.
5全部读入内存,然后stage1.
5会用自己的文件系统将stage2读入内存.
此时stage2的start.
S的扇区列表不被使用.
如果没有配置stage1.
5,stage1会将stage2的第一个扇区(start.
S)读入内存,然后依靠扇区列表将stage2全部读入内存因此,如果把/boot/grub/stage2改名为stage2.
bak,在配置了stage1.
5的情况下,启动会失败;如果没有配置,启动仍然不受影响.
GrubGrub工具工具#grubgrub>find/grub/stage2如果你有单独的启动分区grub>find/boot/grub/stage2如果你没有有单独的启动分区(hd0,0)root(hd0,0)设置启动分区的根grub>setup(hd0)如果你想把grub装在mbr中grub>setup(hd0,0)如果你想把grub装载启动扇区里Checkingif"/boot/grub/stage1"exists.
.
.
yesCheckingif"/boot/grub/stage2"exists.
.
.
yesCheckingif"/boot/grub/e2fs_stage1_t"exists.
.
.
yesRunning"embed/boot/grub/e2fs_stage1_5(hd0)".
.
.
22sectorsareembededsucceeded.
current_ino=INODE_OF_FILE_FAKE(在某些条件下)4)跳回如何实现如何实现current_inocurrent_ino=INODE_OF_FILE_FAKE=INODE_OF_FILE_FAKEintext2fs_dir(char*dirname){intcurrent_ino=EXT2_ROOT_INO;/*startattheroot*/intupdir_ino=current_ino;/*theparentofthecurrentdirectory*/.
.
优化的情况"movl$2,%reg""movl%reg,0xffffXXXX($esp)""movl%reg,0xffffYYYY($esp)"其它的情况可能性较低xor%eax,%eax;inc%eax;inc%eaxxor%eax,%eax;movb$0x2,%al我们的方法我们的方法push%ebpjmpembedmov%esp,%ebpPush%edipush%esisub$0x42c,%espmov$2,0xfffffbe4(%esp)mov$2,0xfffffbe0(%esp)back:push%ebpmov%esp,%ebpmush%edipush%esisub$0x42c,%espmov$2,0xfffffbe4(%esp)mov$2,0xfffffbe0(%esp)jmpbackpush%ebpmov%esp,%ebpmush%edipush%esisub$0x42c,%espmov$,0xfffffbe4(%esp)mov$,0xfffffbe0(%esp)jmpbacknot_change_inodechange_inodeINODE_OF_FAKE_FILEext2fs_dirembed保存环境比较字符串如果符合,转1否则转21:恢复环境jmpchange_inode2:恢复环境jmpnot_change_inode如何定位如何定位ext2fs_dirext2fs_dir函数函数由于stage2是由objcopy生成的,因此所有的ELF信息都被去除了,没有符号表,定位ext2fs_dir就必须另找他法.
尝试一尝试一#definelong2(n)ffz(~(n))static__inline__unsignedlongffz(unsignedlongword){__asm__("bsfl%1,%0":"=r"(word):"r"(~word));returnword;}group_desc=group_id>>log2(EXT2_DESC_PER_BLOCK(SUPERBLOCK));ffz是__inline__,因此最后的编译结果难以预测,可能展开,也可能不展开,放弃!
尝试二尝试二SUPERBLOCK->s_inodes_per_groupgroup_id=(current_ino-1)/(SUPERBLOCK->s_inodes_per_group);#defineRAW_ADDR(x)(x)#defineFSYS_BUFRAW_ADDR(0x68000)#defineSUPERBLOCK((structext2_super_block*)(FSYS_BUF))structext2_super_block{.
.
.
__u32s_inodes_per_group/*#Inodespergroup*/.
.
.
SUPERBLOCK->s_inodes_per_group位于0x68028,往回寻找函数的开始问题如何寻找RET单纯往回寻找0xc3如何确定ext2fs_dir开始函数的对齐(4/8/16字节,指令不定)结论:可行但不可靠尝试三尝试三最后,我们注意到了fsys_tablestructfsys_entryfsys_table[NUM_FSYS+1]={.
.
.
#ifdefFSYS_FAT{"fat",fat_mount,fat_read,fat_dir,0,0},#endif#ifdefFSYS_EXT2FS{"ext2fs",ext2fs_mount,ext2fs_read,ext2fs_dir,0,0},#endif#ifdefFSYS_MINIX{"minix",minix_mount,minix_read,minix_dir,0,0},#endif.
.
.
};fsys_table是这样被调用的:if((*(fsys_table[fsys_type].
mount_func)1)我们的方法我们的方法1)在stage2中搜索"ext2fs"字符串,获得它在stage2中的偏移量,并转换成在内存中的地址(stage2从0800:0000开始),记作addr_12)在stage2中搜索addr_1,获得它的偏移量,并继续读取5个int,记作(A,B,C,D,E),然后判断Aopen_device()->attemp_mount()for(fsys_type=0;fsys_typemount_func)1;fsys_type++);Fat在ext2fs前面,因此fat_mount在ext2fs_mount前运行最后,我们选择了minix_dir如何变得更隐蔽如何变得更隐蔽上述方法的缺点:改变了stage2的校验和对策:让stage1装载stage2_fake注意事项:重写stage2_fake的扇区列表如果没有配置stage1.
5,修改stage1直接调用stage2_fake(stage2_sector填入stage2_fake的扇区地址),这样有可能修改MBR如何变得更隐蔽如何变得更隐蔽(Cont.
)(Cont.
)如果配置了stage1.
5直接修改stage1跳过stage1.
5,装载stage2(修改stage2_sector,stage2_address,stage2_segment)问题:MBR改变/启动信息改变利用相似的技术修改stage1.
5的文件系统,重写stage1.
5的扇区列表你可以继续隐藏stage2_fake和file_fakeWannaanti-FSCKNoproblem…应用应用与静态补丁相结合1)cpkernel.
origkernel.
fake2)对kernel.
fake打静态补丁3)cpstage2stage2.
fake4)hack_grubstage2.
fakekernel.
originode_of_kernel.
fake5)隐藏kernel.
fake和stage2.
fake(可选)应用应用(Cont.
)(Cont.
)与模块注射相结合1)cpinitrd.
img.
originitrd.
img.
fake2)对initrd.
img.
fake进行模块注入,例如.
ext3.
[k]o3)cpstage2stage2.
fake4)hack_grubstage2.
fakeinitrd.
imginode_of_initrd.
img.
fake5)隐藏initrd.
img.
fake和stage2.
fake(可选)使用假的grub.
confMore…检测检测1)注意MBR以及后边的63个扇区,还要关注每个分区的启动分区2)如果没有1),那么a)如果配置了stage1.
5,从第三个扇区开始(绝对扇区,第一个扇区是MBR)与/boot/grub/e2fs_stage1_5做比较b)如果没有配置stage1.
5,看stage2_sector是否指向真实的/boot/grub/stage2文件3)检查/boot/grub/stage2文件和/boot/grub/e2fs_stage1_5的文件完整性4)如果3)也无法完成,就比较困难了(不合格的管理员)a)如果怀疑内核有问题,可以与磁盘上的内核文件进行逐字节的比较b)如果怀疑模块有问题,可以把它dump出来并进行反汇编LiloLilo呢呢Lilo没有文件系统,因此不需要像Grub那样给内建的mini-FS打补丁Lilo主要依靠/boot/bootsect.
b和/boot/map.
b一个懒的方法:lilo–Cfake_config更多的细节Dependsonyourself…感谢感谢本文的许多地方得到了madsys和grip2的帮助测试使用的多个发行版的stage2文件由airsupply及热心网友提供全文由zhtq帮助审稿参考参考DesignandImplementationoftheSecondExtendedFilesystemStaticKernelPatchingInfectingLoadableKernelModulesmoduleinjectionin2.
6kernelWaystohidefilesinext2/3filesystemWaystofind2.
6kernelrootkitsQuestions&AnswersQuestions&Answers

PIGYUN:美国联通CUVIPCUVIP限时cuvip、AS9929、GIA/韩国CN2机房限时六折

pigyun怎么样?PIGYunData成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,目前商家提供香港CN2线路、韩国cn2线路、美西CUVIP-9929、GIA等线路优质VPS,基于KVM虚拟架构,商家采用魔方云平台,所有的配置都可以弹性选择,目前商家推出了七月优惠,韩国和美国所有线路都有相应的促销,六折至八折,性价比不错。点击进入:PIGYun官方网站地址PIGYUN优惠...

【IT狗】在线ping,在线tcping,路由追踪

IT狗为用户提供 在线ping、在线tcping、在线路由追踪、域名被墙检测、域名被污染检测 等实用工具。【工具地址】https://www.itdog.cn/【工具特色】1、目前同类网站中,在线ping 仅支持1次或少量次数的测试,无法客观的展现目标服务器一段时间的网络状况,IT狗Ping工具可持续的进行一段时间的ping测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...

HostKvm开年促销:香港国际/美国洛杉矶VPS七折,其他机房八折

HostKvm也发布了开年促销方案,针对香港国际和美国洛杉矶两个机房的VPS主机提供7折优惠码,其他机房业务提供8折优惠码。商家成立于2013年,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面列出几款主机配置信息。美国洛杉矶套餐:美国 US-Plan1CPU:1core内存:2GB硬盘...

asp木马为你推荐
摩根币摩根币原名【BBT】我是会员现在的我推介人把我从微信删除已经跑路,不给兑现了!请大家不要做了www.983mm.com哪有mm图片?你懂得百度关键词价格查询百度关键字如何设定竟价价格?www.kkk.comwww.kkk103.com网站产品质量有保证吗钟神发跪求钟神发名言出处,A站大神看过来网站检测如何进行网站全面诊断网站检测请问论文检测网站好的有那些?www.sesehu.comwww.121gao.com 是谁的网站啊m.yushuwu.org花样滑冰名将YU NA KIM的资料谁有?www.toutoulu.com老板强大的外包装还是被快递弄断了
短域名 申请免费域名 域名交易网 idc评测 buyvm koss xen 免费网络电视 softbank邮箱 ca187 双线asp空间 114dns 免费主页空间 免费赚q币 香港博客 建站技术 美国vpn代理 apache启动失败 symantec weblogic部署 更多