安防技术猿
普及安防知识,提高安全意识。
写在前面:若想实现篇中内容首先需要能接入考勤机所在网络
这篇的做法也算不上破解,只是一个作弊的小手段,拯救迟到党
单位装了中控刷脸考勤机,从机器这端考虑的话,刷脸比指纹更难破解了,毕竟每个人只有一张脸,不能用其他同事的手指代劳;而服务器端没有权限去访问,也谈不上破解,于是可以考虑在网络传输方面尝试一下。
用电脑接入考勤机所在网络,必须同一个碰撞域。这个地方很奇怪,同一个广播域(同vlan,不同接口)下没能嗅探到考勤机和服务器通信的数据包。
电脑上装网络嗅探软件,我这里用的是wireshark。选好对应网卡,开始捕获,这时去考勤机上刷一下脸,制造一个考勤过程。回来停掉捕获,准备下一步的分析过程。
这里说一下,如果知道考勤机或者考勤服务器的IP地址,可以捕获前把捕获过滤器细化一下,避免受到太多不相干的包。http://blog.csdn.net/cumirror/article/details/7054496
下一步,审视一下这些捕获到的包,如果知道IP地址当然非常好找,但如果不知道,就需要仔细找找关键字,比如你的工号,考勤机的一些关键词:
因为数据包并不多,很明显地可以找到考勤机和服务器之间的交互,如果干扰的包太多,可以在关键包上右键→追踪流→TCP流,筛选出来。
可以看出,考勤机用POST方法给服务器传了一些内容,端口号8090,User-Agent指的是上传数据的终端形式(也就是考勤机,通畅这个地方可以看出用户用的是什么浏览器),但Url中SN是什么?table是什么?Stamp是什么含义? 另外,HTTP requestbody中第一部分是工号,第二部分是日期时间,但后面的255 15 0是什么意思呢?
这时候可以查查考勤机的开发资料,虽然不多,但很幸运地找到了:https://wenku.baidu.com/view/c97ee7105ef7ba0d4b733be9
这个文档里面有关于这些字段的定义,sn是考勤机序列号,talbe ATTLOG是考勤表,Stamp是时间戳,255 15什么的,和开发文档里不相符,估计版本不一致,姑且先不管。
下一步,想办法伪造这个HTTP通讯。这里找到一个好工具,fiddler。具体用法可以自行学习,这里只讲怎么构建这个考勤场景中需要的POST方法。
选composer,依葫芦画瓢,把wireshark分析出来的内容对应填进去(Host和Content-Length不用填,自动生成的)。注意,255和15和几个0之间是tab字符隔开的,不是空格,直接用也不行。请求头的冒号后面是有一个空格的,冒号要用半角,这些细节都应该注意。 编辑完毕后点Execute,执行,此时左侧可以看到服务器返回了状态值200,OK。
如果能访问到考勤机的请假页面,就可以查一下对应这个工号的考勤记录了,神奇地发现,这个考勤记录可以不是实时添加的,也就是说你可以添加昨天或者明天的考勤记录,可能这个考勤机制很简单,没有时间验证。另外,那些参数保持不动就可以,调的时候只调工号、SN(决定了伪造哪台考勤机上传的记录),以及日期时间即可。
最后,思考一下考勤机的工作机制。抓包中,并没有抓到人脸数据在网络中的传输记录,说明人脸识别d过程是考勤机自己完成的,识别出来你是哪个工号的主人后,直接把你的工号加上当前机器的时间传给服务器。考勤机中的人脸信息,估计是事先从服务器上获取到的。另外,这个伪造方法不知道在服务器后台生成的数据库记录会不会有问题,还需考证,如果有机会访问到考勤服务器,可以探究一下。
领取专属 10元无门槛券
私享最新 技术干货