bookmark_border用了好几年的chrome扩展竟然有后门?!

malware

今天上班,刚打开fiddler就在自己的http log里发现了一条发自chrome扩展程序的可疑request。

打开这个扩展的chrome web store页面发现已经被下架。
网上搜了一圈发现有人有同样疑问,虽然没有完全解开谜团,但基本可以确定是可疑程序了。
打开扩展的js代码看了一下,全部重度混淆,果然是做贼心虚。
最可气的是他的代码中竟然包含 function(data){eval(data);} 这样的执行任意代码的后门,我操!

插件名: “Classic Scrollbar Buttons”
这是一个让chrome重新使用老式右侧滚动条外貌的常驻扩展。我已经用了很多年,竟然直到今天才发现带后门,真是……无语。
暂时先把它发出的request信息原样保存好,插件暂时禁用,等我有空了再回来收拾你。

bookmark_border记与黑马君长聊

mariokart8

时隔大约半个decade,终于又一次听到了D-Horse同学的声音。喜闻君亦入行IT,感慨良多。

连打6个小时的电话怕是我个人生涯的最高纪录了,话题竟然够讲这么久,我自己都觉得有点不可思议。

跟你倾诉我社交生活太少感觉寂寞之类凡人的苦恼,现在想想自己都觉得不好意思。这种事还是应该自己内部消化才比较成熟。不过谁让我们就是从幼稚时就相识的呢,这点任性,想你应该可以体谅:)

两个人联机马车确实是不如一大群人一起玩有意思,不愧是party game。下次看看有没有什么暗黑2那样两个人可以一起闯关,平时也能自己推进的游戏吧。明年王者荣耀如果评价不错,可以考虑联机一手,如果账号可以跨服联机的话。

关于理想的工作,我也有同样的苦恼,也是正在理想与现实之间难以做出抉择。只恨自己技不如人,年轻时没有花时间去精进自己的手艺,积累作品,落到现在不能随心愿选择工作的处境。不过过去的已经过去,现在的我是疯狂揽活填充业余时间,希望5年后的自己不会再同样怨恨现在的自已吧。

跟你说的我信息成瘾的事,正好在这里记下来提醒自己。今后刷微博刷新闻的时候要提醒自己停止,就像当年成功戒掉了愤世嫉俗关注政治新闻的习惯后,发现我的生活并没有因为缺少政治信息而有丝毫褪色一样,相信停止疯狂吸收信息也不会摧毁我的现有生活。省下来的时间嘛,把自己买的kindle电子书先消化一下吧。拿来玩游戏也很不错。我现在正处在怀疑自己是否真的喜欢游戏行业的自我怀疑阶段,多玩一些主机和PC游戏,让我仔细感受一下自己还会不会为这个行业兴奋吧。每次去秋叶原走一走我都感觉自己的信仰得到了充值,赴日留学时的心情又重新浮现。我对游戏行业的热情也需要像秋叶原这样可以帮我为信仰充能的象征,希望能在玩游戏的时间里找到。

听你讲的德国的福利真让我有点动心。现在日本的养老金制度是交足10年就有资格领取,随便你在日本还是在海外,对外国人非常友好。如果今后有机会去欧洲找一下工作,也许也是不错的生活。不过因为语言等原因,去欧洲工作的话我可能会去英国,到时候去找你玩要靠划船坐飞机了。

趁我还在日本,快来日本玩呀!我也努力提升专业技能,给转职之路攒一些筹码,顺利的话转职间隙也会去找你玩的!

bookmark_border从 raid1 的单盘中取出文件

harddisk

今天用两块新硬盘,试了一下用synology创建raid1后,故意破坏其中一片硬盘,再从剩余的另一块硬盘中恢复文件。实测给synology一块新硬盘,它自己可以修复raid1。

不过比较尴尬的是,当我破坏raid1后再拔掉两块硬盘,然后重新插上,这时synology就无法识别这两块硬盘内的raid1了,更无法修复,这就很恶心了。

上网查了一下,修复方法是用linux下的mdadm挂载raid1中剩下的一块硬盘,从中取出文件。

 

先说一下,我是在windows虚拟机 hyper-v 里创建了一个 centos6.9 的虚拟机,把硬盘挂在虚拟机上测试的。

 

官方给的命令是

# mdadm -Asf && vgchange -ay

执行之后会增加一个 /dev/md*, 比如我这里增加的是 /dev/md4。有了这个md之后可以用

# mount /dev/md4 /{empty_folder}

命令挂载硬盘到指定目录,然后就可以从这个目录中访问原始 raid1 中的文件了。

用完以后用

# umount /{empty_folder}

解除挂载,然后用

# mdadm –stop /dev/md4

解除对 raid 硬盘的解析。

 

不过之前不知道怎么回事,官方命令我没执行成功。后来用 blkid , fdisk -l 等命令调查过,根据种种迹象得知硬盘上的三个分区,我需要的是 /dev/sdb3。

之后执行

# mdadm –assemble –run /dev/md127 /dev/sdb3

mdadm: /dev/md127 has been started with 1 drive (out of 2).

(这里md127是随便写的,应该不是非得用这个名字。)

之后执行

# mount /dev/md127 /{empty_folder}

挂载硬盘后,一样可以访问。

取消的命令分别是

# umount /{empty_folder}

或者

# umount /dev/md127

然后执行

# mdadm –stop /dev/md127

mdadm: stopped /dev/md127

 

值得一提的是,有人说需要用

# mdadm –examine –scan >> /etc/mdadm.conf

来修改配置文件,就可以在启动时加载磁盘阵列了,不过我这次只是想知道取出文件的方法,懒得重启测试了,这里只做记录,不再测试。

 

bookmark_border入侵自己家的监控摄像头 (二)

要找出HTTP服务器的漏洞,先要确定这是用的什么服务器软件。
我发现 404 response 的 Reason-Phrase 是“Site or Page Not Found”,而不是最常见的”Not Found”。搜索“Site or Page Not Found”发现这很可能是某个早期版本的 goahead 服务器程序。
搜索可知 goahead 程序在早起有很多bug,甚至包括远程执行任意代码的漏洞。不过直接试用执行远程代码的漏洞失败了…
有一天突发奇想,能不能从固件升级包中找到 goahead 的版本信息呢?于是下载了一个 firmware 的 bin 文件,用 Binwalk 打开后,找到了 goahead 的可执行文件。此时终于可以确定服务器端软件用的就是 goahead 了。
不过开发方也不是拿来就用的,它们似乎注释掉了源代码中关于 goahead 版本信息的代码,这就很恶心了。好消息是这个 goahead 软件是开源的,不过官方 repo 里只有从2.5版至今的代码历史,但根据可执行文件中的内容推测,摄像头中的 goahead 是一个早于 2.5 版的版本。为什么官方不提供更早的版本管理信息呢?看源代码,我才之前是用 svn 管理的代码,后来在迁移到 git 时直接复制进来,放弃了 svn 时代的代码历史。现在官网也不提供更早版本的下载了,无奈之下在 github 上找到了几个包含早期 goahead 版本的 repo,从中提取出了几个离散的早期版本的 goahead。有趣的是,我无论如何也找不到1.x版本的 goahead,我猜这个软件是进入2.x时代开始才改名叫 goahead 的吧。
那么,我是怎么根据可执行文件推测程序版本的呢?说来惭愧,用的是一个很土很低效的方法。
首先,goahead 是一个 c 语言编译出来的程序。c 语言的编译器我不是很了解,但是直觉上来讲,编译后常量字符串应该原样储存在可执行文件体内。搜索发现事实符合我的猜测,而且编译器会就近把同一个原文件中出现的字符串按顺序放在相邻的位置。
根据以上信息,我通过比较代码的变更历史,找到了一些仅出现在特定版本中的字符串和它们的排列顺序,最终确定我的摄像头使用的是2.1.4到2.1.8之间的某个版本的 goahead。
根据这个版本信息,我找到了几个可能可用的 goahead 的漏洞信息,但这些漏洞信息都只说漏洞适用于2.1版本,没有小版本信息,没办法只好根据代码推测漏洞是否依然可用了。