关于Absolute公司防盗追踪软件安全风险的提示

一、风险概述

近日,有技术爱好者反映其计算机主板BIOS中预置了一款由Absolute公司开发的防盗追踪软件Computrace,计算机启动后,操作系统即隐蔽安装该软件,经常向境外传输不明数据;该软件可远程获取计算机中用户文件、控制用户系统、监控用户行为,甚至可在未经授权的情况下自动下载安装未知功能的程序,具有很大的安全隐患。

经专家分析发现,Computrace软件预置固化在多款型号计算机BIOS芯片中,软件所使用的网络协议能够提供基础的远程代码执行功能,不需要远程服务器使用任何加密措施或认证,且该远程控制功能随开机启动,常驻于用户电脑,安全风险较大。

二、影响范围

联想、戴尔、苹果、微软、惠普、富士、东芝、松下、三星、华硕、宏基等厂商部分便携式计算机、台式机、工作站。

  1. 处置措施

    请及时要求有关单位对使用的计算机进行排查,发现预置Absolute公司软件的,请根据业务重要性等妥善处置,方法请参考附件。

    附件:

    Absolute防盗追踪软件排查与处置方法

    一、排查是否

    联想品牌计算机请进入BIOS”Security”菜单,查找是否有”Anti-Theft”子项,即如下图所示。

     

    如有”Anti-Theft”子项,进入后可发现Absolute的防盗追踪软件Computrace,即说明存在该软件。

     

    其他品牌请在BIOS菜单中逐一筛查。

    二、处置

    方法1:更换主板或升级BIOS

    升级方法请联系计算机生产商咨询。

    方法2:禁止该软件运行

    第一步:打开注册表编辑器,请定位到:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

    将右边的 BootExecute 键值(系统默认为autocheck autochk *)备份后删除掉,阻止该程序自动再启动后续进程。

    第二步:在任务管理器中结束相关进程,删除System32目录下的文件rpcnet.exe、rpcnetp.exe、rpcnet.dll、rpcnetp.dll,此时切勿重新启动Windows。

    第三步:在System32目录下分别新建以上四个文件,文件内容为空,为每个文件执行如下操作:右键单击,打开属性页,切换到”安全”选项卡,为列出的每个用户或组(包括SYSTEM)设置为拒绝”完全控制”。

    方法3:禁止该软件访问网络

    修改host文件,将相关域名设置为禁止访问:记事本打开C:\Windows\System32\drivers\etc\hosts文件,末行输入以下信息后保存。

    127.0.0.1 search.namequery.com

    127.0.0.1 search.namequery.com

    127.0.0.1 search2.namequery.com

    127.0.0.1 search64.namequery.com

    127.0.0.1 search.us.namequery.com

    127.0.0.1 bh.namequery.com

    127.0.0.1 namequery.nettrace.co.za

    127.0.0.1 m229.absolute.com

    并在防火墙软件中设置将rpcnet.exe、rpcnetp.exe 禁止访问网络。

将Tiddlywiki保存到web服务器

最近搞了个Mediawiki,但对于新手而言,学习新语法的成本太大,建个目录都查了很久。后来了解到tiddlywiki这个小东西,决定自己建一个服务器( 传送门 )来存放日常的笔记。

系统环境

操作系统采用Centos7

安装httpd

yum install httpd

vim /etc/httpd/conf/httd.conf

建议把/var/www/html的属性设置成以下:

Options FollowSymLinks

AllowOverride All

Require all granted

systemctl start httpd

安装php组件

添加CentOS 7.x 的第三方源

# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装 PHP

# yum install –enablerepo=remi,remi-php73 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common

注:安装7.3版本为remi-php73,安装5.5版本为remi-php55

查看 PHP 版本

# php -v


重要

php安装后,对于文件上传的限制是2M,而tiddlywiki的文件都是大于2M,需要修改。修改方式为

Vim /etc/php.ini

找到upload_max_filesize项目,改为

upload_max_filesize = 10M

如果不改,将导致tiddlywiki失败,而且php-fpm的日志/var/log/php-fpm/error.log也报不出来任何错误信息。

安装tiddlywiki

进入 http://tiddlywiki.com 官网,阅读下面的 GettingStarted 条目。这里根据你的浏览器版本会切换的对应的教程,不过总的来说,你只需要点击 Download Empty 按钮就可以下载好一个全新的 TiddlyWiki 的 html 文件了。将empty.html上传到apache服务器的Document Directory(默认是/var/www/html),将其 重命名为index.html

配置PHP 保存

PHP 保存非常容易配置。官方的教程在这里:https://tiddlywiki.com/#Saving on a PHP Server

  • 在 https://code.google.com/archive/p/bidix/downloads 下载一份 TiddlyHome_*.*.*.zip(墙内的朋友可以来这里
  • 解压
  • 找到里面 _th\lib\store.php 这个文件,解压并编辑里面的 $USERS = array( ‘UserName1’=>’Password1’…) 为你想要的用户名和密码。并设置$AUTHENTICATE_USER = true,这个选项默认为false,不改成true,任何人都可以修改你的服务器上的文件。
  • 保存此文件
  • 上传 store.php 到你的服务器,systemctl restart httpd
  • 去 TiddlyWiki > tools > control panel>saving> TiddlySpot Server

    输入以下信息:

    wiki name栏就是store.php里写的用户名

    password就是store.php里写的密码

    Server URL填入store.php文件本身的全路径,而不是你的tiddlywiki的主页面;

    其他默认就可以。

  • 现在,点击保存时,已经会直接保存在服务器上了
  • 注意:
    1. 你可能需要把备份文件名设置成 index.html
    2. 每次保存都会自动创建一份备份,你可以定期手动清理
    3. 建议修改备份文件夹为 backup ,这样会把备份保存在 backup/ 子目录而非 . 根目录下

因为 TiddlyWiki 并没有用户登陆界面,这个设置页面就相当于登陆页面。密码是按浏览器保存的,所以如果你想在当前浏览器退出登录,到设置页面清除密码设置就好。如果你换了一个浏览器打开 Wiki ,你将需要进入设置重新填写一次密码(相当于登陆),才能使用在线保存。

可能遇到的 store.php 错误

如果你在如上配置完成后,点击保存后弹出正在保存 Wiki,此后就没有反应、并且在浏览器开发者工具中的 Network 网络面板看到 500 Internal Servel Error ,你可以尝试打开 PHP 的错误日志查看报错:

vim  /usr/local/php/etc/php-fpm.conf
php_flag[display_errors] = On # 直接在网页上显示错误信息
#php_admin_value[error_log] = /usr/local/php/var/log/php_errors.log
#php_admin_flag[log_errors] = on
cat /usr/local/php/var/log/php-error.log # 或者直接在浏览器中查看报错

关于 split() 函数的问题

TiddlyWiki store.php split() error

那么可能是你运行的 php 版本已经废弃这个函数,编辑 store.php 文件并查找替换所有的 split 为 explode 即可。

额外的Maximum size的问题

对于php里的upload and/or post除了php.ini的限制,可能存在.htaccesshtaccess 文件里的限制,在某些系统上,可能像这样:

php_value upload_max_filesize 4M

php_value post_max_size 6M

语法学习

推荐一个台湾教师的网站

http://web.nlhs.tyc.edu.tw/~lss/wiki/TiddlyWikiTutorialTW.html

腾讯云CVM如何配置NTP

最近给腾讯云主机配置ntp时,特意查了一下官方文档,讲的比较粗略

https://cloud.tencent.com/document/product/213/30393

这样配是没有问题的,但安全性却大打折扣,因为在外网的其他服务器是可以向你的主机查询时间的,也就是对于UDP/123端口的访问控制做的不够细化。(可用ntpdate -q 云主机ip这条命令测试,是能获取到时间的)

实现访问控制,第一个想到的是iptables,但上一级的ntp服务器的ip地址可能变换。最佳的方式应是修改/etc/ntp.conf文件。

加入以下行,允许本机不受限制地访问自身的ntpd(从而你能够监控ntpd,以及用ntpdc快速地做配置变动):

IPv4: restrict 127.0.0.1

IPv6: restrict -6 ::1

先注销掉centos自带的server行

Vi /etc/ntp.conf,

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

然后查找上级时钟服务器的IP地址(ntpupdate.tencentyun.com和 time.edu.cn)

#host ntpupdate.tencentyun.com

ntpupdate.tencentyun.com has address 169.254.0.2

#host time.edu.cn

time.edu.cn has address 202.112.0.38

time.edu.cn has address 202.112.10.36

time.edu.cn has address 202.112.10.37

time.edu.cn has address 202.112.0.7

vi /etc/ntp.conf

加入以下行:

server ntpupdate.tencentyun.com

restrict    169.254.0.2

server time.edu.cn

restrict    202.112.0.38    nomodify notrap nopeer noquery

server time.edu.cn

restrict    202.112.10.36    nomodify notrap nopeer noquery

server time.edu.cn

restrict    202.112.10.37    nomodify notrap nopeer noquery

server time.edu.cn

restrict    202.112.0.7    nomodify notrap nopeer noquery

修改完毕再service ntpd restart

之后外网的主机再ntpdate -q <X.X.X.X>就获取不到你的服务器时间了

【参考链接】

http://support.ntp.org/bin/view/Support/AccessRestrictions#Section_6.5.1.1.

以下是简要的翻译。

对于每个上级的时钟服务器,都加入以下两行(中括号内是可选的选项,按实际需要来)

(若为IPV4地址)

server x.y.z.w

restrict x.y.z.w [nomodify notrap nopeer noquery]

(若为IPV6地址)

server -6 v:u:t:s::

restrict -6 v:u:t:s:: [nomodify notrap nopeer noquery]

你可以在server行用主机名或ip地址,但在restrict行必须用ip地址。加上restrict行后面中括号里的选项无伤大雅,要知道是你在用人家的ntp服务,他们管你要一点信息不过分吧。

也可以加入以下行,允许特定IP的主机无限制地向你的服务器要时间

IPv4: restrict 192.168.1.10

以下行的作用是允许某个网段的机器来管你要时间以及查询你的服务器统计数据:

IPv4: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap nopeer

IPv6: restrict 2001:838:0:1:: mask ffff:ffff:ffff:ffff:: nomodify notrap nopeer