扇区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

PacificRack 端午节再来一款年付$38 VPS主机 2核4GB内存1TB流量

这不端午节和大家一样回家休息几天,也没有照顾网站的更新。今天又出去忙一天没有时间更新,这里简单搜集看看是不是有一些商家促销活动,因为我看到电商平台各种推送活动今天又开始一波,所以说现在的各种促销让人真的很累。比如在前面我们也有看到PacificRack 商家发布过年中活动,这不在端午节(昨天)又发布一款闪购活动,有些朋友姑且较多是端午节活动,刚才有看到活动还在的,如果有需要的朋友可以看看。第一、端...

提速啦母鸡 E5 128G 61IP 1200元

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

Boomer.host:$4.95/年-512MB/5GB/500GB/德克萨斯州(休斯顿)

部落曾经在去年分享过一次Boomer.host的信息,商家自述始于2018年,提供基于OpenVZ架构的VPS主机,配置不高价格较低。最近,主机商又在LET发了几款特价年付主机促销,最低每年仅4.95美元起,有独立IPv4+IPv6,开设在德克萨斯州休斯顿机房。下面列出几款VPS主机配置信息。CPU:1core内存:512MB硬盘:5G SSD流量:500GB/500Mbps架构:KVMIP/面板...

asp木马为你推荐
摩根币摩根币是什么意思?硬盘的工作原理硬盘的工作原理?是怎样存取数据的?刘祚天Mc浩然的资料以及百科谁知道?原代码什么叫源代码,源代码有什么作用同ip网站12306怎么那么多同IP网站啊?这么重要的一个网站我感觉应该是超强配置的独立服务器才对啊,求高人指点同ip网站同IP网站9个越来越多,为什么?同ip网站同IP的两个网站,做单向链接,会不会被K掉??www.vtigu.com如图,已知四边形ABCD是平行四边形,下列条件:①AC=BD,②AB=AD,③∠1=∠2④AB⊥BC中,能说明平行四边形ip查询器查看自己IP的指令www.03ggg.comwww.tvb33.com这里好像有中国性戏观看吧??
青岛虚拟主机 百度域名 新通用顶级域名 net主机 骨干网 创宇云 typecho 网通服务器ip 免费ftp空间申请 网站木马检测工具 亚马逊香港官网 福建铁通 免费网页申请 畅行云 七十九刀 hosting24 webmin blaze 56折扣网 qq空间登陆首页 更多