TuskedEvening0's Blog

对某假想共享打印机的付费墙绕过与反绕过方案

该文章存活也就2天。自博客遭遇肘击后,该文一直没有任何存档。既然老师已经同意将其作为小组作业继续写下去了,那此文也将或多或少会和已经做到一半的PPT融合。

Preface:为何要写

这是小组作业。

共享打印机概况

该共享打印机目前使用什么方案

它内部塞了以下:

1.工控机:4GB内存,猜测CPU为J1900,使用Windows 7 Ultimate x86_32。

2.喷墨打印机:占地最多的部分。

3.外部输入输出设备:触摸屏、喇叭。这些是探出的。

该共享打印机具有什么功能

它主要功能就是打印和取纸(基于打印空白页实现),传输文件部分可以通过服务器下发,也可以通过外部存储介质访问。

共享打印机绕过付费墙切入与切入点解释

TLDR

外接键盘,反复重启,等登录后ctrl-alt-del选择任务管理器,在任务管理器里置顶。这时候付费墙承载的软件应该刚刚启动,你可以最小化它。但请注意,不要关闭,否则它会重新启动。但请注意,不要断网,否则几分钟后整个系统将重新启动,并在多次重启后彻底陷入bootloop

共享打印机系统本身非软件特性

  • 关机后自动启动:因为关机键和USB口距离过近,可能是为防止误触,它会在关机后自动重启。
  • 内部具有民用级供电策略:即插座。外延两根天线。

硬件上切入点解释

外接方案的可行性说明与输入设备的选择思路

因为我们可以物理而非远程操作主机,故利用网络访问入口达到控制的方案可以暂且不提。

还记得它可以通过外部介质访问文件的特性吗?它的实现是基于USB协议实现的,或者说的通俗点,插U盘。既然它能识别USB设备并可以将设备当做输入设备读取数据,那自然也可以插个键盘上去并能让电脑读取它输入的数据。

为什么不是鼠标?触摸屏本身是可以当做鼠标使用的,鼠标本质上是一个可以指向屏幕特定点,通过特定按键操作的输入设备,触摸屏也是类似道理;且该系统无法在触屏下找到绕过切入点。而且,该工控机只给我们留了一个USB口,虽然可以通过插拓展坞的方式拓展接口,但我懒。

如何知晓系统概况

其实很简单。

工控机上不是有开机键吗,正好可以点一下。然后你就会发现——

好了,用的什么操作系统你已经知道了。

然而,你还可以接一个拓展坞,上面接个烧有HikariPE的U盘和键盘,你就可以通过AIDA64、CPU-Z、Dism++等工具得知概况了。

你甚至还可以通过它把整个系统导出成镜像。

软件上切入点解释

Windows NT 任务管理器的特性

不胡扯,直接上引用。

When selecting Options → “Always on top” it overlays itself over all running windows, even when a new window has been launched. On some circumstances, this option is already enabled.

BetaWiki

当选择“选项”→“置于顶层”时,即使已启动其他的窗口,它也会将自身覆盖在所有正在运行的窗口上。甚至它会覆盖在输入法候选框上,让你在任务管理器的运行框里输入文字时摸不着头脑。在某些情况下,此选项已启用。

BetaWorld

付费墙承载者启动链

是的,这玩意儿是含有启动链的。

首先系统会启动protector和Electron。

然后protector再去启动播放器本身、升级程序等。Electron进程本身承载付费墙界面显示的部分。

至于“播放器”是干什么用的,我个人猜测其本身可能是专门用来放广告的,需求变更后发现代码的自恢复部分(自动重启等)可以复用,所以它会出现在这个东西里。

当Electron进程被终止时,其会重新启动自己。

如何反付费墙绕过方案

硬件

反多启动

多启动影响何处

多启动主要影响外部启动维护环境并通过访问SSD内文件系统达到取证的效果。

虽然不用多启动也可以达到相同的效果,但它实际上是绕过了基于整个打印机系统的监控措施。

如何反多启动
  • 开启安全启动:Windows一般都会有个key的,安全启动开启后必须要那个key才能启动,正好在某些程度上起到了反多启动的作用(大多数外部启动设备没有那个key)。然而,目前绝大多数系统已经支持安全启动,而且(大部分)Windows PE环境也拥有相关签名。
  • 设置BIOS菜单密码:避免有人进入BIOS菜单修改设置。这个方案不是所有主板都支持,部分华为的主板支持这项特性(一般叫管理员密码。但是不要设置成开机密码,这样的话每次开机都需要输入密码。大多数主板的BIOS密码即开机密码)。
  • 禁用Boot from USB:不多说,部分主板支持这个功能。(很明显我们家并没有这种条件去添置商业主板,是我见识太少了,同时感谢MBRjun补充!)

软件

在原有系统上小修小补

阉掉explorer.exe

是的你没看错,就是直接删explorer.exe。

explorer.exe本身就是个shell,提供了开始桌面、开始菜单等基础界面交互。你删掉它后最多就是没了桌面。

如果你仍然担心,火绒早就干了。

专门截了个图放上面了,实在有些喜感
禁用Windows任务管理器

巧了,微软有写过重新启用任务管理器的文章

我们正好可以逆向思维一下。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
DisableTaskMgr=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\LocalUser\Software\Microsoft\Windows\CurrentVersion\Policies\System]
DisableTaskMgr=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
DisableTaskMgr=dword:00000001

换个新系统!

Windows,岂懂?

这个我真不懂,但是除了可以参照如上方案外,还能用Windows 10 IoT改shell的方法将Electron进程作为shell启动。

将付费墙作为shell嵌入系统可以搭系统给shell的一系列特权顺风车,例如关掉自动系统层重启之类的。

原神Arch Linux,启动!

*其实针对这种相对固定的场景,Ubuntu和Debian non-Testing non-Sid这种非滚动发行版反而是更好的选择。毕竟Arch可能更新一次炸几个包需要重新编译,但Debian等是会停留在某一个大版本的,对环境更为可控,有啥漏洞修复更新也能吃上(除非版本实在太老,不过也可以通过自建源+统一大版本更新解决)

USB驱动改掉键盘标识符

不开玩笑,可以改内核驱动源码的。参考辣波道场聊Xbox手柄接口与记忆卡接口的那期视频。从6:57开始看。

省流:Xbox改了手柄相关的设备描述(HID)为XID,让其只识别XID的手柄。

这样的话就是只能使用特殊协议的键盘了,但也正好阻断了用外接键盘操作这一条路。不过也没事,辣波道场的那期视频也正好说明了转换方法!

窗口管理器/Xfce+Wine,你值得拥有

窗口管理器是为了提供一个最基本的图形化界面。当然如果触屏用不了的话,Xfce也是可以用的,直接不装xfce4-panel就好。

窗口管理器/Xfce等桌面环境也是支持软件置顶的。当然如果可以的话,X11或Wayland只有个付费墙,没有桌面环境什么的也是可行的。

Wine这个方案主要是考虑不重新编译的状况。上面所说的配合窗口管理器/桌面环境就是为它配合的。

对管理员权限实现更难上升的管理

其实很简单:

  • root账户设强密码
  • 将低权限用户移除出sudoers(sudo组)

这样的话除非su和内核出了什么0day,否则一般用户是没啥方法能够提权的。

至于登录,gdm、sddm等登录/显示管理器是可以设置为自动登录的。桌面环境自己也可设置成不休眠。


发布于

分类:

标签:

评论

发表评论

许可协议