该文章存活也就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.
当选择“选项”→“置于顶层”时,即使已启动其他的窗口,它也会将自身覆盖在所有正在运行的窗口上。甚至它会覆盖在输入法候选框上,让你在任务管理器的运行框里输入文字时摸不着头脑。在某些情况下,此选项已启用。
付费墙承载者启动链
是的,这玩意儿是含有启动链的。
首先系统会启动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等登录/显示管理器是可以设置为自动登录的。桌面环境自己也可设置成不休眠。
发表评论