开年第一炮,浅尝逆向嵌入式设备拿Shell

这是一次实验性的去获取一台硬件设备中的shell。我不是专门做嵌入式开发的,不够专业。可能存在多处笔误,怕误人子弟,有问题的地方希望被指出。

我们身边的嵌入式设备其实非常多,大大小小的比如:摄像头、机顶盒、字幕屏、门禁、考勤机、路由器、娃娃机、街机…甚至是你家新买的智能电饭煲!他们大多数都是基于Linux嵌入式开发的。

思路:

  • 通过串口进入shell,屏蔽掉正在运行的主程序。

详细过程:

  • 拆机
  • 试串口
  • 调频段
  • 找主程序关掉日志
  • 屏蔽自启动
  • 找到启动项配置

拆机

就是把壳子给卸了,然后找电路板上的串口或引脚,这里串口的长相还有引脚种类貌似挺多的,我不是太懂。

试串口

一般来说板子上都会留下串口,我们找到相对应的串口线搭配串口调试工具去试,如果连接成功可能第一反应是花屏乱码的情况。则说明有信号输入了。

比如下面这种情况,就代表连接成功了。

调频段

针对不同的频段一个个试。总有一个是对的。

值得注意的是,修改频段后一定要重新连接,否则可能出现还是乱码的问题。

直到出现这样的画面,则表示正常连接且频段也是正确的。

有些嵌入式是默认没有账号的,我这台默认使用了root作为账号密码为空。关于这个只能自求多福烧录的时候没有写死一个特殊的账号就会很方便。这里也同样说明了,产品的安全性问题最好还是不要使用root账号烧写在系统里。

找主程序关掉日志

一般Linux嵌入式设备都会放一个该产品的主程序,该程序如果没有关闭日志,接上串口后会打印一大堆日志,这样我们很不方便操作系统。那么就可以先选择把他们屏蔽掉。

我们可以通过ps –a来取到一些敏感的进程和路径。使用kill -9 [PID] 强制结束掉主程序。注意这里有个问题,有些产品做得比较完善,他们会启一个守护进程相互守护,如果被Kill就会立刻重启,导致你无法操作。

屏蔽自启动

实际上,面对守护进程最好的办法就是把程序在自启动的时候干掉。由于我对Linux不是特别熟悉,找了一下好像很多地方都可以配置自动动,索性想了一个比较取巧的办法绕过。通过 ps命令找到进程路径,找到路径下的该程序,把名称改掉。然后重启设备,让设备无法找到该程序。就自然无法启动了。守护进程也起不来。

找到启动项配置

因为我们改了主程序的名称,这样会导致在启动设备时Linux会抛异常说找不到路径,根据这个异常日志就可以知道配置写在哪里了。

剩下的操作,我们可以随便玩了。

随缘打赏!