[第14天] 高分辨率和键盘输入

好久没有更新了。最近搞怎么黑人搞上瘾了。所以没有时间更新这个了。当然不能半途而废。

今天的主要内容是更新分辨率和接收键盘输入。分辨率这部分我早就实现了。因为原来320×200的分辨率看着实在恶心。而且这部分也不难,主要涉及硬件,所以直接跳过。

基本原理:

键盘的原理是什么?学过电子的应该知道,TM的映射那么多键需要很多线,而且还有组合这不是坑爹吗?我也不是很清楚,概括来说就是有个单片机一直在扫描电路,看看有没有接通,接通了就传给计算机相应代码。具体可以看这个。搞过下面的那个板子的同学肯定也能理解原理。但是如何做到这么多键位我就有点糊涂了。

danpianji

按下键盘的按键后,硬件会传入一个代码,这个代码代表什么字符就需要系统判断。一般的映射是Original XT scan code set。按下A就传如1E,松开传入9E。我也实现了这个。

代码实现:

其中接收部分之前就已经完成。就是传入到FIFO里。然后要做的就是解释代码。为了方便起见,用个数组。下面就是主要代码。

参考:

  1. OS dev
  2. Computer engineering
  3. linux atkbd.c
  4. how keyboard works

渗透后记之攻击人性弱点

我7月的时候获取了一台linux主机的本地权限,却没有办法获取root权限。根据我的分析这是一台曾经经常使用的主机,所以必定存在弱点。获取root权限是黑客永恒的追求。即使是没什么技术含量的我,也希望能通过分析人的弱点来突破。毕竟找系统漏洞什么的,交给那些内核大牛。也确实有root privilege escalation,之前已经提过。这次主要是提我利用的人的弱点。

可读权限:

默认linux创建的文件权限都是755的,所以可读。利用这个特点,我就可以遍历可读目录,分析文件内容。这里面蕴含大量信息等着挖掘。因此我花了一个礼拜,当然也发掘出很多关键字,以及邮箱和人物身份,这对破解密码来说是至关重要的。所以说攻击是最好的防御,回去我立刻把默认创建的文件属性改为700。虽然我的电脑只有我这个用户。唠叨一句,这可以通过umask实现。

可写权限:

很多系统都存在开机脚本或者是以root运行的脚本或是是setuid的。这时就可以找到那些可写脚本,运行s时创建setuid的合适可执行文件(vim)就行了。 find . -type f -writable 就能找到可写文件。然后类似的 chmod u+s /bin/vim 就行了,相当于一个后门。那到时直接就可以写该/etc/passwd, /etc/shadow, /etc/sudoers了。

备份文件:

一个好的系统必然有备份,关键是怎么备份的。我用rsync,权限也能备份过来。而那台机器是直接一个tar。虽然只是/etc的备份,那就已经足够了。我就不客气的拿了过来。接下去的就是下一步了。因为etc里保存着密码。

薄弱口令:

有个软件叫john,破解密码神器。但是我没有体会到过。我选了cudaHashcat。你懂的,GPU更快啊。说到密码,经过我的观察,基本上都是数字加小写字母的组合,如果不是我也可以放弃了。因此用cudaHashcat就是 cudaHashcat -a 3 -m 500 --session=jtest passwdshadow -i -1 ?d?l ?1?1?1?1?1?1?1 。大概花了一晚上破了一个7位的密码。效率还是蛮高的,毕竟是 md5(UNIX) 加密。不是简单的md5。获取这个用户的密码,我可以做两件事,一是有个开机启动脚本。而是文件读取权限。然后我就戏剧性的下一步了。如果这里行不通,可以分析主机上的数据库,然后暴力md5就快的多。更有撞库法。获取用户的信息比如常用邮箱什么的,就可以根据网上泄漏的数据库匹配。这种自己找。

命令历史:

shell一般会保存各种命令历史。而这个系统没有sudo,只有su。因此每次都要打密码。我想你也遇到过直接把密码打出了的情况。这个时候就会被记录到.bash_history,然后运气实在太好。居然真的有,然后那机器的root权限就ok了。

顺藤摸瓜:

grep ssh .bash_history ,这样就能波及其他主机,因为这又是人性的弱点,密码基本都一样。然后一个bbs也沦陷了。请叫我吊哥!