全文仅供娱乐,如有任何不当之处,立马修改/删除
小说内容仅为虚构,请勿当真
买云请上雨云,便宜稳定性价比高,专属五折优惠码:mianfei
或点击:雨云 - 新一代云服务提供商
快速跳转到对应章节请看第1-2章帖子的开头
第17章 猫鼠游戏
凌晨两点,林语关掉笔记本,却没有真正睡下去。
他躺在床上,脑子里还在转着那个佛山IP的事。一百多次访问“关于我们”页面,这行为太刻意了。要么是爬虫,要么就是BlackCat在告诉他:“我还在看着你。”
他翻了个身,拿起手机,看了一眼搬砖狐最后那条消息。
“你打算怎么应对?”
林语回复了一个字:“等。”
然后他关掉手机,强迫自己睡了过去。
第二天早上七点,林语被闹钟吵醒。
他睁开眼的第一件事,就是打开笔记本,检查后台日志。
那个佛山IP已经停止了访问,最后一次记录是凌晨三点十七分。
林语盯着那个IP,若有所思。
他拿起手机,打开移动热点,把自己的电脑连上手机网络。
然后,他给搬砖狐发了一条消息:“狐狸,我有个想法。”
“说。”
“我打算在学校机房布蜜罐。”
“蜜罐?诱捕BlackCat的蜜罐?”
“对。我想在学校的机房部署几个模拟的服务器环境,伪装成雨云的内网系统。如果BlackCat还在渗透,他一定会对这些环境感兴趣。”
“有风险吗?”
“有。但值得一试。”
“那你需要我做什么?”
“帮我写几个模拟的数据库和API接口,越逼真越好。”
“行。你什么时候要?”
“今天下午。”
搬砖狐发了一个猫猫点头的表情:“下午两点交给你。”
林语笑了笑:“谢了。”
“不客气。记住,要请我吃酸菜鱼。”
“两顿。”
上午九点,林语背上电脑包,骑着共享单车去了学校机房。
这是他第一次使用学校的创新创业基地——虽然上次申请挂靠被拒绝了,但机房还是可以用的。
学校机房在一栋老旧的教学楼里,三楼,门牌号写着“信息技术实验中心”。林语推开玻璃门,一股灰尘味扑面而来。机房里有二十几台电脑,大部分是几年前的配置,屏幕上积了一层灰。
林语找到机房的负责人,一个四十多岁的中年男人,戴着黑框眼镜,正在看视频。
“老师您好,我是计算机系的学生,想借用几台服务器做项目。”
“服务器?”负责人抬头看了他一眼,“我们这没服务器,就这些PC。”
“那就借几台PC吧,有个Linux环境就行。”
“Linux?我们这都装的是Windows。”
“那我装虚拟机也行。”
负责人犹豫了一下:“你要几台?”
“五台就够了。”
“行。别搞出什么问题就行。”
“谢谢老师。”
林语挑了几台看起来比较新的PC,开始安装VMware虚拟机,然后一个个装上了Linux系统。
他一边装系统,一边琢磨着蜜罐的架构。
这个蜜罐,要看起来像雨云的内部系统——有用户数据库、有控制面板接口、有API路由,但实际都是模拟的,没有任何真实数据。
而且,蜜罐要能捕捉攻击者的所有操作——他输入的每一个命令,上传的每一个文件,连接的每一个IP,都要记录。
最重要的是,蜜罐要看起来有漏洞——不然BlackCat不会上钩。
林语花了两个小时,在五台虚拟机上搭建好蜜罐环境。
然后,他打开搬砖狐发给他的代码,开始部署模拟的API接口。
搬砖狐写得很用心,界面UI都模仿雨云控制面板的风格,甚至连数据库表的命名规范都一样。
林语看着代码,忍不住笑了:“狐狸这是真用心了。”
他部署完后,又在蜜罐里放了一些“诱饵”——模拟的用户数据、模拟的计费记录、模拟的工单系统。
他甚至在一台虚拟机里,故意留下了一个和之前那个废弃API类似的接口漏洞。
做完这一切,他打开手机热点,把这些虚拟机全部连接到了互联网上。
然后,他打开搬砖狐的聊天窗口:“蜜罐已就绪。”
“好的。你把蜜罐的入口IP发我,我看看能不能从外网访问。”
林语把IP发了过去。
几分钟后,搬砖狐回复:“可以访问。但你的蜜罐太干净了,没有真实流量,BlackCat不会注意到。”
“那怎么办?”
“我帮你搞点假流量。”搬砖狐说,“我写个脚本,模拟几个真实用户访问蜜罐的IP。这样蜜罐看起来更真实。”
“好主意。你尽快。”
“半小时。”
半小时后,搬砖狐发来一个脚本。
林语在蜜罐里运行脚本后,IP访问记录开始更新——有来自上海的、有来自成都的、有来自北京的,甚至有来自国外的。
林语看着这些模拟流量,心里感叹:“狐狸这技术,真不是盖的。”
然后,他关掉电脑,收拾东西,准备回宿舍。
临走前,他看到机房负责人在看电视剧,随口问了句:“老师,学校的网络是固定IP吗?”
“不是,动态的。每次重新连接都会换IP。”
“那有公网IP吗?”
“有的有的,我们学校有公网IP段,但都是教育网的。”
“明白了。谢谢老师。”
林语走出机房,心里有了一个想法。
他想利用学校的IP段,为BlackCat设置一个陷阱。
他想让BlackCat以为,学校机房是雨云的一个内部测试节点。
这样,BlackCat就会主动攻击这些节点,而他就可以捕捉到BlackCat的真实IP。
下午一点,林语回到宿舍。
他打开笔记本,先检查了一遍蜜罐的状态——五台虚拟机都在正常运行,模拟流量也在持续更新。
然后,他打开论坛,看到BlackCat昨天发的帖子已经被管理员删了。
但林语注意到,论坛的“在线人数”显示有137人,其中有一个访客的IP段是“60.0.0.0/8”的。
那个IP段,是北京电信的。
林语心里一紧。
他告诉搬砖狐:“狐狸,我看到北京电信的IP在浏览论坛。”
“北京电信?可能是普通用户吧。”
“但愿吧。”
林语关掉论坛,开始写自己的代码。
他决定,今天的重点任务是完善蜜罐的日志分析系统——他要能从海量的日志中,快速定位到攻击者的操作。
他打开搬砖狐发给他的蜜罐源码,发现里面已经包含了一个日志分析模块。
搬砖狐代码里写了:
// 日志分析模块
// 功能:捕获所有访问蜜罐的请求,记录IP、UA、请求时间、请求参数
// 作者:搬砖狐
// 注:这个模块是给林老板准备的,希望他能抓住那个黑猫。
林语看到这段注释,忍不住笑了。
“狐狸是真懂我。”
他花了一个小时,把日志分析模块完善了一下,增加了关键词过滤和异常行为检测。
然后,他打开蜜罐的后台,开始等待。
下午三点,搬砖狐发来消息:“蜜罐有动静了。”
“什么动静?”林语立刻看后台日志。
“我刚才用脚本模拟了一下,发现蜜罐的模拟数据库被访问了。”
“被谁?”
“IP显示是佛山电信。”
林语的心跳开始加速。
“你确定?”
“确定。这个IP在半小时内访问了三次模拟数据库,每次都是尝试连接数据库的默认端口。”
“他有没有尝试登录?”
“没有。他只是尝试连接,没有进行任何操作。”
“这大概是BlackCat的侦察行为。”林语说,“他在试探蜜罐的安全性。”
“那你要不要做点什么?”
“暂时不。让他再试探几次,让他觉得蜜罐是安全的。”
“明白了。”
林语关掉聊天窗口,开始记录佛山IP的访问时间。
他发现,这个IP每次访问蜜罐的时间间隔都在十分钟左右,而且访问的过程中,会先连接蜜罐的Web端口,然后尝试连接数据库端口。
这种操作模式,和林语在安全课程里学到的“侦察阶段”非常相似。
林语心想:“这个人一定受过专业训练。”
下午五点,林语正在写代码,突然收到搬砖狐的语音通话请求。
他接起电话:“狐狸,怎么了?”
“林语,我刚才又检查了蜜罐的日志,发现了一个异常。”
“什么异常?”
“在佛山IP访问蜜罐之前,有一个IP从郑州访问了蜜罐。”
“郑州?”林语皱眉,“之前BlackCat的C2服务器,不是指向香港吗?”
“对。但郑州这个IP,访问的是蜜罐的数据库端口,而且使用的是MySQL的默认账户。”
“MySQL默认账户?root账户?”
“对。他尝试用root账户登录数据库,但被防火墙拦截了。”
林语的脑子里立刻浮现出一个画面——某个黑客,坐在郑州的电脑前,远程操控着一切。
“你觉得,这个IP是BlackCat吗?”林语问。
“有可能。”搬砖狐说,“但我建议你再观察一下。如果他真的是BlackCat,他应该还会继续尝试访问蜜罐。”
“好。我继续盯着。”
林语挂断电话,打开蜜罐的日志系统,搜索“郑州”关键词。
他发现,郑州这个IP在过去一个小时内,访问了蜜罐四次,每次都尝试连接数据库端口。
而且,这个IP在访问的时候,User-Agent显示的是“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36”。
这个User-Agent太普通了,普通到几乎每个浏览器都在用。
但林语注意到一个细节——这个User-Agent的版本号是“537.36”,而最新版本的Chrome浏览器,User-Agent的版本号是“537.36”的很少。
这意味着,这个IP可能在使用一个旧版本的浏览器——或者,他在刻意伪造User-Agent。
林语把这个发现告诉搬砖狐。
搬砖狐回复:“你观察得真仔细。如果是旧版本浏览器,那他的系统可能很老旧,或者他在用内核版本较旧的浏览器比如IE。”
“但我更倾向于他在伪造User-Agent。”
“为什么?”
“因为如果他是BlackCat,他不可能用旧版本的浏览器。他应该是技术很先进的人。”
“有道理。”
林语继续观察。
晚上七点,林语正在食堂吃饭,突然收到搬砖狐发来的一条消息:
“林语,蜜罐被攻击了。”
林语放下筷子,飞快地跑回宿舍。
他打开蜜罐后台日志,看到一堆奇怪的请求——有大量针对MySQL端口的暴力破解请求,还有针对Web端口的SQL注入尝试。
这些请求的IP来源,分布在郑州、北京、上海、广州等多个城市。
林语看了一眼时间——从傍晚六点半到七点,短短半小时内,蜜罐收到了超过两千次攻击请求。
他深吸一口气,强迫自己冷静下来。
他知道,这一定是BlackCat在试探。
他打开搬砖狐的聊天窗口:“狐狸,这些攻击请求,你觉得是BlackCat在主动攻击,还是他在用跳板测试?”
“我觉得是测试。”搬砖狐说,“因为这些请求的模式很一致,都是先尝试连接端口,然后发起SQL注入。这说明攻击者在用自动化工具测试。”
“那他现在应该已经知道蜜罐是假的了?”
“不一定。”搬砖狐说,“如果你的蜜罐设计得足够逼真,他可能会认为这是真的系统,只是防御做得比较好。”
“那我们现在要怎么做?”
“不要有任何反应。”搬砖狐说,“让他继续攻击,让他以为蜜罐是真实系统。这样,他才会继续使用真实IP访问蜜罐。”
“有道理。”
林语同意搬砖狐的观点,决定按兵不动。
他打开蜜罐的日志系统,开始手动分析攻击请求。
他发现,这些攻击请求的攻击手法非常专业——SQL注入的payload设计得很精细,都是针对真实数据库的漏洞设计的。而且,这些攻击请求的速度控制得很好,每次发送请求后都会等一段时间,再发送下一个请求。
这种手法,林语只在安全教程里见过。
他心想:“这个人,一定是职业的。”
晚上九点,攻击停止。
林语检查蜜罐的状态——五台虚拟机都还正常,没有一台被攻破。
但他注意到,在攻击停止前的最后几分钟,蜜罐收到了一条特殊的请求。
这个请求的源IP是郑州电信,请求的参数是一个SQL插入语句,目标是蜜罐的用户数据库。
林语仔细看这条请求——它尝试向用户数据库插入一条新记录,记录的内容是:
“BlackCat was here”
林语愣了一下。
然后,他忍不住笑了。
BlackCat果然上钩了。
他打开搬砖狐的聊天窗口:“狐狸,BlackCat在蜜罐里留下了签名。”
“签名?什么签名?”
“他往数据库里插了一条记录,内容是‘BlackCat was here’。”
搬砖狐沉默了几秒,然后回复:“他这是在告诉你,他知道蜜罐是假的了。”
“不,我觉得他不一定知道。如果他真的知道蜜罐是假的,他就不会留下签名。他留下这个签名,只是因为他觉得这个系统是真的,所以想在数据库里留下痕迹。”
“嗯……也有可能。”
“我现在可以确定,郑州这个IP,就是BlackCat的真实IP。”林语说。
“你确定吗?”
“我确定。因为他攻击蜜罐的时候,使用的都是真实IP,没有经过任何伪装。”
“但你之前不是说,BlackCat很谨慎吗?”
“谨慎是一回事,但猎物的诱惑是另一回事。当他发现一个看起来像是雨云内部系统的节点时,他的欲望压过了谨慎。”
搬砖狐发了一个竖起大拇指的表情:“那你现在准备怎么办?”
林语盯着屏幕上的郑州IP,心里已经想好了下一步的计划。
“我要把他的IP精确到小区。”
晚上十点,林语开始对郑州这个IP进行反向追踪。
他先查询了IP的归属地——郑州电信,动态宽带。
然后,他尝试获取IP的详细地理信息——他使用了一个开源的地理位置库,根据IP段的分配规则,大致确定了IP的位置范围。
他把范围缩小到了郑州市二七区的某个小区。
林语把这个结果发给搬砖狐:“狐狸,我找到他了。”
“找到了?在哪儿?”
“郑州二七区的一个小区。”
“你确定吗?”
“动态宽带的IP,我只能定位到小区级别。但我有九成的把握,就是这个小区。”
“那你下一步打算做什么?”
林语想了想,然后回复:“我什么都不做。”
“什么都不做?”
“对。我已经拿到了他的关键证据。现在我要做的,是等待他自己暴露更多的信息。如果我主动出击,他可能会立刻切断联系,销毁证据。”
“嗯……有点道理。”
“而且,我要让他以为,我还没发现他的真实IP。这样,他才会继续放松警惕,继续攻击蜜罐。”
“你这是在钓鱼?”
“对。”林语说,“我是猫,他是老鼠。但这次,我要慢慢来。”
凌晨一点,林语终于决定睡觉。
他躺到床上,脑子里还在回放今天一整天的经历。
从早上在机房布蜜罐,到下午发现郑州IP,再到晚上验证BlackCat的签名。
这一天,他经历了太多。
但他觉得很值得。
因为他终于拿到了BlackCat的真实IP。
他知道,这只是一个开始。真正的战斗,还远没有结束。
但他有了方向。
他打开手机,看到搬砖狐发来的最后一条消息:
“晚安,林老板。记得请我吃酸菜鱼。”
林语笑着回复:“两顿,记住了。”
然后,他放下手机,安心地闭上了眼睛。
第二天早上八点,林语被搬砖狐的电话吵醒。
“林语,你起来了吗?”
“刚醒……”林语揉了揉眼睛,“怎么了?”
“我刚才检查了一下蜜罐,发现有一个异常。”
“什么异常?”
“蜜罐里有一个虚拟机的系统日志,记录了一条奇怪的信息。”
“说具体点?”
搬砖狐停顿了一下,然后用一种很严肃的语气说:“那条信息是:系统在凌晨两点的时候,被远程重启了。”
林语的睡意瞬间消失了。
他猛地坐起来:“凌晨两点?”
“对。”
“我的蜜罐没有设置自动重启啊?”
“所以,这条日志有问题。”搬砖狐说,“我怀疑,有人在凌晨两点的时候,通过某种方式远程登录了蜜罐,然后手动重启了系统。”
“但他为什么这么做?”
“可能是在测试蜜罐的稳定性和响应能力。”搬砖狐说,“或者,他是在……留下痕迹。”
林语立刻打开笔记本,检查蜜罐日志。
他发现,在凌晨两点到两点零一分之间,蜜罐的SSH端口确实有一次成功的登录记录。
登录的用户名是“root”,密码是“password”。
但这个密码,是林语故意设置的弱密码——用来吸引攻击者的。
登录的IP来源,依然是郑州电信。
林语心里一惊:“他登录了系统?”
他打开系统日志,检查凌晨两点的操作记录。
他发现,在凌晨两点的时候,系统执行过一条命令:
“touch /root/.blackcat”
这条命令,在系统的根目录下创建了一个隐藏文件。
林语打开那个文件,看到里面只有一行字:
“你的蜜罐做得很逼真。但你的猴子还太嫩。—— BlackCat”
林语盯着这行字,愣了几秒。
然后,他忍不住笑了。
“他竟然知道蜜罐是假的。”林语自言自语。
他打开搬砖狐的聊天窗口:“狐狸,他确实知道蜜罐是假的。”
“你怎么知道的?”
“他在系统里留了一个文件,内容是‘你的蜜罐做得很逼真。但你的猴子还太嫩。’”
搬砖狐发了一个无奈的表情:“所以,他发现我们了。”
“对。”
“那你接下来怎么办?”
“没关系。就算他知道蜜罐是假的,他也已经暴露了自己的真实IP。”林语说,“我已经拿到了他最重要的信息。”
“你打算现在就公布?”
“不。我还要再等。”
“等什么?”
“等他再次出手。”
上午九点,林语正在吃早餐,突然收到一条论坛私信。
发信人的ID是“BlackCat”。
林语点开私信,看到一句话:
“林老板,你的蜜罐不错。但蜜罐里的猴子,太容易抓了。”
林语嘴里咬着一块面包,愣住了。
他没想到,BlackCat竟然会主动联系他。
他放下面包,想了想,回复了一句:
“你抓的不是猴子,是我。”
“哦?那你怎么解释,我轻轻松松就登录了你的系统?”
“因为你登录的系统,是我故意给你看的。”
“哦?是吗?”
“对。你真的以为,我会让你轻易登录我的系统?”
BlackCat沉默了几秒,然后回复了一个表情:
一个猫猫头,嘴角微微上扬,眼神中带着一丝玩味。
然后,他说了一句话:
“林老板,你让我很感兴趣。”
林语看着这个表情,心里升起一丝不安。
他意识到,BlackCat不是在和他对抗。
他是在玩他。
他想通过这种猫鼠游戏,慢慢消磨林语的耐心,慢慢摧毁林语的信心。
林语深吸一口气,回复了一句:
“想玩?我陪你。”
BlackCat回复:“好。我等你。”
上午十点,林语把和BlackCat的对话截图发给了搬砖狐。
搬砖狐看完后,沉默了很长时间。
然后,她回复:“林语,你要小心。这个BlackCat,心理素质很强。”
“我知道。所以,我要用更谨慎的方式对付他。”
“你想怎么对付?”
“我要用心理战。”林语说,“我要让他觉得,他是一个猎人,我是一只猎物。然后,在他的自信达到顶点的时候,我反杀他。”
“你确定你能做到?”
“不确定。但值得一试。”
搬砖狐发了一个拥抱的表情:“加油。我支持你。”
上午十一点,林语开始部署新的计划。
他决定,在蜜罐之外,再部署一个真实的服务器。
这个服务器,会是雨云的一个测试节点——一个真实的,接入生产环境的测试节点。
他要在BlackCat攻击这个节点的时候,捕捉他的更多证据。
他打开云控后台,申请了一台香港机房的高防服务器——这是雨云目前在用的机房,也是BlackCat之前攻击过的机房。
然后,他在这台服务器上,部署了一个和蜜罐类似的模拟系统,但这次,他不再设置弱密码。
他把密码设置得很复杂——随机生成的三十二位密码。
然后,他在系统里安装了入侵检测系统,配置了详细的日志记录。
做完这一切,他打开搬砖狐的聊天窗口:“狐狸,我要用这台真实服务器钓鱼。”
“真实服务器?”
“对。我申请了一台香港的高防服务器,部署了和蜜罐类似的系统。但这次,密码很复杂,入侵检测系统也配置了。”
“你觉得他会攻击这个节点吗?”
“一定会。因为他已经尝到了甜头,以为所有的节点都那么好突破。”
“但你不是把密码设置得很复杂吗?”
“对。所以,如果他能突破这台服务器,那他一定是一个技术更高超的高手。如果他突破不了,那他就会暴露更多信息。”
“嗯……有道理。”
“而且,我在这个节点里放了一个诱饵——一个标记为‘客户财务数据’的文件夹。”
“你疯了?你竟然用自己的真实服务器做诱饵?”
“风险是存在的。但我已经把防火墙规则设置得很严格了,只有特定的端口和协议才能外网访问。而且,我的入侵检测系统会在第一时间发现异常行为,然后自动切断攻击者的连接。”
“好吧。我相信你。”
“谢谢。”
下午两点,林语完成部署。
他检查了一遍所有配置,确认无误后,打开了节点对外的端口。
然后,他开始等待。
他打开搬砖狐的聊天窗口,发了一条消息:“钓鱼开始了。”
“好的。我在后台看着。”
下午四点,林语的手机突然响起警报声。
他打开手机一看——入侵检测系统报告:“检测到来自郑州电信的异常连接,目标端口:22(SSH),次数:3次。”
林语的心跳猛地加速。
BlackCat来了。
他立刻打开入侵检测系统的后台,开始实时监控攻击行为。
他看到,郑州电信的IP,正在尝试登录他的香港服务器。
第一次尝试,失败了——密码错误。
第二次尝试,也失败了——密码错误。
第三次尝试,依然失败了——密码错误。
三次尝试后,这个IP停止了连接,没有再继续。
林语看着这个记录,心里有些疑惑:“就三次?这就放弃了?”
他刚想继续分析,突然,入侵检测系统又报告了新的异常。
这次,是来自北京电信的IP,目标端口同样是22,尝试次数也是三次。
然后,是来自上海电信的IP,同样是三次尝试。
然后,是来自广州电信的IP,同样是三次尝试。
……
在接下来的半小时里,入侵检测系统报告了超过二十个IP的异常连接,每个IP都尝试三次SSH登录,然后放弃。
林语看着这些记录,终于明白了。
BlackCat在用大量跳板IP,扫描他的香港服务器。
这些IP,来自全国各地的电信网络——北京、上海、广州、深圳、成都、武汉、杭州……
他的目的,是找到林语服务器上所有可能存在的漏洞。
林语心里一紧。
他知道,这场猫鼠游戏,越来越激烈了。
晚上七点,林语再次检查入侵检测系统的记录。
他发现,在经过半天的扫描后,攻击的频率开始降低了。
而且,在所有的扫描中,没有一个IP成功登录了他香港的服务器。
林语松了一口气。
他打开搬砖狐的聊天窗口:“狐狸,扫描结束了。”
“结束了?他有没有成功登录?”
“没有。密码太复杂,他试不出来。”
“那他接下来会怎么做?”
“我不知道。”林语说,“但我感觉,他不会这么轻易放弃。”
“为什么?”
“因为他是一个非常有耐心,且非常执着的人。他花了五个月的时间潜伏在我的系统里,现在既然已经发现了我的新节点,他一定不会轻易放手。”
“那你要不要加强一下防御?”
“不用。我现在的防御已经足够强了。我要做的,是等待他下一次出手。”
晚上九点,林语正在写代码,突然收到搬砖狐发来的一条消息:
“林语,蜜罐里又有动静了。”
“什么动静?”
“蜜罐里的一个虚拟机,被上传了一个文件。”
林语立刻打开蜜罐后台,查看文件内容。
这是一个tar压缩包,压缩包里的文件夹名称是“blackcat_tools”。
林语解压后,看到里面有几个文件——一个PHP木马,一个Python脚本,一个配置文件。
他打开PHP木马,发现这是一个专门针对Linux系统的后门,可以通过Webshell远程控制。
他打开Python脚本,发现这是一个信息收集工具,可以收集系统的IP、用户名、密码、文件列表等信息。
而那个配置文件里,记录着一些信息:
“target_ip: 60.0.0.1”
“backup_ip: 10.0.0.2”
“c2_server: blackcat.ddns.net”
林语看着这个配置文件,心里一阵激动。
BlackCat竟然把自己的C2服务器地址,直接写在了配置文件里。
他立刻打开搬砖狐的聊天窗口:“狐狸!我找到黑猫的C2服务器了!”
“真的?在哪儿?”
搬砖狐沉默了几秒:“你确定这是真的?”
“这个配置文件是从蜜罐里找到的,而且是黑猫上传的。”
“但我建议你确认一下这个域名是不是真的属于黑猫。”
“怎么确认?”
“你DNS解析一下这个域名,看看IP是多少。”
林语照做了。
他发现,这个域名解析到的IP,正是香港电信的一个IP段。
林语心里一动。
他又查看了这个IP的详细信息——IP归属地为香港,运营商是HKBN,数据中心是“新世界数据中心”。
他打开搬砖狐的聊天窗口:“狐狸,我查到C2服务器的位置了。”
“在哪儿?”
“香港,新世界数据中心。”
“你确定吗?”
“DNS解析的结果显示是香港电信的IP段。而且,这个IP段是香港知名的数据中心。”搬砖狐说,“黑猫可能把C2服务器放在了一个真实的机房。”
“那他为什么要上传这个配置文件?”
“可能是测试。”搬砖狐说,“或者,这是一个陷阱。”
“陷阱?”
“对。他可能故意上传一个包含假C2服务器地址的配置文件,引诱你去攻击错误的服务器。”
林语想了想,觉得搬砖狐说得有道理。
他不能轻信这个配置文件。
他得验证这个C2服务器是不是真的属于BlackCat。
他想了想,决定用另一种方式验证——直接尝试连接这个C2服务器,看看能不能建立连接。
他打开终端,输入命令:“telnet blackcat.ddns.net 443”
几秒后,连接成功建立。
林语心跳加速。
他打开搬砖狐的聊天窗口:“连接成功了!”
“真的?”
“真的!443端口是开放的!”
“那你接下来怎么做?”
“我打算用nmap扫描这个C2服务器,看看它对外暴露了哪些端口。”
“你确定要这么做?”
“确定。”
“好。我帮你。”
晚上十一点,林语和搬砖狐同时开始了对blackcat.ddns.net的远程扫描。
林语用的是nmap,搬砖狐用的是masscan。
半小时后,结果出来了。
C2服务器对外开放的端口有:22(SSH)、80(HTTP)、443(HTTPS)、8080(HTTP Proxy)、8443(HTTPS Proxy)、3306(MySQL)、6379(Redis)。
其中,8080和8443端口上,运行着一个名为“blackcat_web”的服务。
林语尝试访问80端口,但是被跳转到了8443端口的登录页面。
登录页面显示:“BlackCat Remote Access Terminal”
林语看着这个界面,心里一阵激动。
“这就是他的C2服务器。”他说。
“你确定吗?”
“确定。这个界面,和之前上传的配置文件里描述的C2服务器完全一致。”
“那你现在要登录吗?”
“不。我要先看看这个系统的登录页面,看看能不能找到漏洞。”
林语开始分析这个登录页面的代码。
他发现,这个登录页面是用的PHP写的,登录验证是通过POST请求提交用户名和密码。
他尝试用SQL注入,但被防火墙拦截了。
他尝试用万能密码,但也不行。
他尝试用暴力破解,但系统的登录机制限制了每个IP只能尝试三次。
林语尝试了多种方法,但都没能突破这个登录页面。
他关掉浏览器,陷入沉思。
“这黑猫,把C2服务器的安全做得很好啊。”他自言自语。
他开始思考,如何突破这个C2服务器。
凌晨一点,林语还在研究BlackCat的C2服务器登录页面。
他打开搬砖狐的聊天窗口:“狐狸,这个登录页面,我试了各种方法都突破不了。”
“那你有没有试过……直接用默认用户名密码?”
“默认?什么默认?”
“很多黑客都会在C2服务器上设置默认的登录凭据,方便自己远程登录。你可以试试常见的默认账号,比如admin/admin,或者root/root。”
林语试了一下admin/admin,显示登录失败。
他又试了root/root,也显示登录失败。
他关掉页面,正准备放弃,突然想到了一件事。
他打开搬砖狐的聊天窗口:“狐狸,你说,黑猫会不会用他常用的用户名密码,作为C2服务器的登录凭据?”
“有可能。但他的用户名密码,我们不知道啊。”
“我知道一个——他在蜜罐里模拟登录的时候,用过好几组密码。我可以试试那些密码。”
林语打开蜜罐日志,记录了BlackCat在蜜罐里使用过的所有密码。
他一共记录了五个密码:
- password123
- admin888
- root123456
- blackcat2024
- catmeow@2024
他一个接一个地试。
第一个失败。
第二个失败。
第三个失败。
第四个失败。
当林语输入第五个密码“catmeow@2024”时,系统弹出了一行提示:
“登录成功。欢迎回来,BlackCat Admin。”
林语手里的鼠标差点掉下来。
他成功登录了BlackCat的C2服务器。
凌晨一点十五分,林语坐在C2服务器的管理页面前,深呼吸了很久。
他看着屏幕上“BlackCat Admin Panel”的界面,心跳快得像是要跳出胸口。
这个界面,包含了多个功能模块——有“连接管理”、“日志查看”、“远控终端”、“文件管理”、“报告生成”等。
林语先点开“日志查看”,看到了一大堆攻击记录。
这些记录,涵盖了BlackCat在过去几个月里的所有攻击行为——从最初的扫描,到渗透,到上传木马,到潜伏……
林语逐条浏览,发现了一个规律——BlackCat所有的攻击行为,都是通过一个叫“blackcat_node”的跳板执行的。
而这个跳板的IP,指向的是郑州二七区的一个小区——和他之前定位到的小区一致。
林语打开“远控终端”,尝试执行一条简单的命令:
“whoami”
几秒后,系统返回一行字:“blackcat”
林语心里一喜。
他成功控制了BlackCat的C2服务器。
然后,他点开“连接管理”,看到了所有被控制的服务器列表。
一共有三十七台服务器,分布在全国各地——北京、上海、广州、深圳、成都、武汉、杭州……
其中,有一台服务器,IP显示的是雨云香港机房的节点——就是他之前布蜜罐时用的那台高防服务器。
林语看着这个列表,心里一阵震撼。
“他竟然控制了这么多服务器?”
他深吸一口气,然后,他做了一个决定——下载所有证据,然后提交给网安。
他打开“文件管理”,找到了BlackCat的配置文件和攻击日志,全部压缩打包,然后下载到本地。
整个过程,只用了五分钟。
凌晨两点,林语把下载好的证据发给了网安。
然后,他打开搬砖狐的聊天窗口:“狐狸,我成功了。”
“你成功了?你控制了C2服务器?”
“对。我下载了所有证据,已经发给网安了。”
搬砖狐发了一个震惊的表情:“你太牛了,林语。”
“不,是你太牛了。要不是你提醒我试默认密码,我根本进不去。”
“你可真行。那我问你,你现在打算怎么做?”
“等网安的回复。”
“那黑猫呢?他要是发现C2服务器被控制了,一定会销毁所有证据,然后跑路。”
“我知道。所以,我在下载完证据后,故意在C2服务器上留了一个后门。”
“后门?”
“对。我在他的系统里种了一个定时任务,每五分钟执行一次,自动截图当前系统的状态。如果他登录系统,我能知道他的操作。”
搬砖狐沉默了几秒,然后回复:“你是真的狠。”
“在IDC行业里,必须狠。”林语说,“不然,怎么活下去?”
他看着窗外,夜色很深,但心里却异常平静。
他知道,这场猫鼠游戏,他终于取得了压倒性的优势。
但游戏还没有结束。
因为BlackCat还没有被抓获。
他打开那个论坛,看到了BlackCat的最新帖子:
“服务器又坏了,我得换个地方了。”
“不过,林老板,你给我带来了很多乐趣。”
“下一次,我们一定会有更好玩的游戏。”
林语看着这个帖子,笑了笑,然后回复了一句:
“来。”
他关掉电脑,躺在床上,闭上了眼睛。
他知道,下一局,他一定会赢。
凌晨四点,林语被搬砖狐的电话吵醒。
“林语,网安回复了!”
“他们说什么了?”林语揉了揉眼睛,坐起来。
“他们说,证据链完整,网安已经立案了!”
林语愣了一下,然后笑了。
“太好了。”
“而且,网安说,他们根据你提供的C2服务器IP,已经锁定了黑猫的位置!”
“是郑州那个小区吗?”
“对!网安说,他们已经在准备抓捕行动了!”
林语握着手机,声音有些颤抖:“那……这次真的要结束了?”
“不一定。”搬砖狐说,“但至少,我们抓住了他一只脚。”
林语听着搬砖狐的话,心里五味杂陈。
这场猫鼠游戏,从九月持续到十月,从佛山到郑州,从蜜罐到C2服务器……
他终于,拿到了最关键的证据。
但他知道,游戏还没有真正结束。
因为BlackCat,还在外面游荡。
他关掉手机,看着窗外将亮的天色,轻轻地说了一句:
“来。下一局,我等你。”
第十八章 反戈一击
凌晨四点二十分,林语被手机震动唤醒。
搬砖狐的消息在屏幕上跳动:“林语!你那条帖子被转疯了!”
他揉了揉眼睛,打开论坛链接,差点以为自己看错了。
《关于BlackCat渗透雨云事件的完整技术分析》——他用半小时写的这篇长文,已经被顶到论坛首页第一条。
底下评论已经翻了十几页。
“卧槽,这是真实发生的?”
“所以星云那边是真的在搞鬼?”
“雨云老板亲自下场对线?这剧本也太刺激了。”
“楼主能出个修复方案吗?我公司也有类似漏洞。”
林语翻开搬砖狐发来的截图,那篇帖子的阅读量已经破万——对于这种技术论坛来说,已经是相当可观的数字。
他正要回复搬砖狐,手机再次震动。
小宏的电话打了进来。
“林语!你火了!”小宏的声音带着掩饰不住的兴奋,“我刚看到你的帖子,现在读者群里都在转发!好多人在问雨云是什么!”
“你先别激动。”林语揉了揉眼睛,“那篇帖子…真的有那么多人看?”
“你看后台!注册量已经破两百了!”
林语愣了一下,赶紧打开雨云后台。
注册用户数:214。
他记得凌晨三点还在150左右,短短一个多小时,涨了六十多个用户。
这种感觉很奇怪——既兴奋又有些恍惚。
两个月前,他还是一个在宿舍里上线VPS的文科生,连工单都要自己回。
而现在,他的帖子被几千人围观,他的产品被几百人注册。
客厅里传来键盘敲击声,小宏应该也被惊醒了,正在帮忙回复用户的咨询。
林语打开论坛,重新看了一遍自己发的帖子。
帖子的开头很直接:
“这是一篇关于过去一周我经历的技术攻防的真实记录。不想煽情,不讲故事,只讲事实和技术细节。”
他用极其冷静的笔触,从发现大魔王异常开始,到布蜜罐、追C2、控制BlackCat的服务器,每一步都详细说明。
他把证据链拆解成几个部分:
- 废弃API被利用的技术细节
- BlackCat_RAT的样本分析
- C2服务器的定位和突破过程
- 关联证据
最后,他写道:
“我说这些,不是为了炫耀,也不是为了博同情。我只是想告诉所有做技术的同行:安全这条路上,没有真正安全的系统,只有永远不够警惕的人。这次运气好,遇到了一个耐心有限的黑客。下一次,可能就没这么幸运了。”
帖子最后附上了他写的《雨云安全开发规范》的链接,以及推荐的安全工具清单。
林语看着这篇帖子,心里有些复杂。
他原本只是想记录这件事,顺便给同行提个醒。
没想到,会引发这么大的反响。
他切到论坛,看到一条新的评论:
“我是独立开发者,之前一直用某大厂的免费套餐,但最近发现他们开始悄悄限速。看到你的帖子,我决定下一个项目用雨云试试。不是为了支持你,是因为你愿意公开技术细节——这种开源的作风,让我信任。”
林语愣了一下,然后笑了。
他回复:“谢谢信任。我用代码和行动证明,雨云值得这份信任。”
早上七点,林语被搬砖狐的电话再次吵醒。
“林语!你看论坛!”
“又怎么了?”
“黑猫发帖了!”
林语一个激灵,赶紧打开论坛。
论坛首页,一条新帖子被置顶。
标题是:《对林老板公开信的回复:你的猫,我家的猫?》
发帖人:BlackCat。
林语点开帖子,只看了一眼,就皱起了眉头。
帖子内容不长,但每一句都带着挑衅:
“林老板,我看了你的技术分析,写得不错。但你控制的那个C2,是我废弃的。真正的‘黑猫’,还在你的服务器里。”
“不过,你的勇气值得欣赏。能在网上公开这件事,说明你是个有种的人。”
“但我必须提醒你——你的雨云,有一个我不舍得动的东西。等我玩够了,我会告诉你是什么。”
帖子最后,附了一个链接。
林语点开链接,是一个U盘文件——大小只有几百KB。
他小心翼翼地在虚拟机里打开,发现是一个文本文件。
文件内容只有一行字:
“下一局,我不会再给你留活路。认真点,小朋友。”
林语看着这行字,沉默了很久。
他知道,这不是威胁。
而是宣告。
BlackCat在告诉他——之前的交手,只是热身。
现在,真正的对决开始了。
中午十一点,林语在出租屋里召开了一次“会议”。
参会人员:他、小宏、搬砖狐(远程)。
“我们得反击。”林语说,“不能一直被动挨打。”
“怎么反击?”小宏问,“就算控制了C2,那些被控的服务器还在他手上。”
“我的意思是,把这场战争,从暗处拉到明处。”林语说,“我要公开向BlackCat宣战。”
搬砖狐沉默了一会儿,然后说:“你想清楚了?这样会把雨云推到风口浪尖。”
“我知道。”林语说,“但既然已经被盯上,藏着掖着也没用。不如主动出击,让更多的人站在我们这边。”
“那你打算怎么做?”
林语打开一个文档,上面是他刚写好的计划:
“第一步:发布公开技术报告,把这件事完全透明化。”
“第二步:邀请第三方安全团队对雨云进行全面审计。”
“第三步:公开BlackCat的跳板服务器信息,号召同行一起举报。”
搬砖狐看着这个计划,沉默了很久。
然后,她说:“你确定要这么做?”
“确定。”林语说,“我要用他的刀,捅他自己。”
下午两点,林语发布了他的第二篇技术报告。
这次,他不再局限于描述事实,而是直接公开了他控制的BlackCat部分跳板服务器的信息。
包括:IP地址段、开放的端口、部分配置文件内容、攻击记录片段。
他在报告最后写道:
“BlackCat,如果你想证明你的能力,来我的服务器里拿你的‘东西’。我的服务器你来去自如,但希望你能保持风度——不要动其他用户的数据。”
“这场游戏,我陪你玩到底。”
帖子发布后的半小时内,就被搬砖狐转发到了各个技术群。
紧接着,林语收到了第一条支持的私信。
“我是XX安全实验室的,需要帮忙吗?我们可以免费帮雨云做渗透测试。”
紧接着,第二条、第三条…
林语看着这些消息,心里涌起一股暖流。
他知道,他赌对了。
在网络安全这个圈子里,最忌讳的就是“不讲武德”。
而BlackCat的行为——上传木马、控制服务器、威胁用户——把圈子里的底线全部踩了一遍。
现在,林语把这件事公开,相当于把BlackCat放在了整个圈子的对立面。
下午四点,林语的手机再次震动。
是网安那边的电话。
“林语,你们的案子已经立案了。根据你提供的C2服务器信息,我们已经锁定了犯罪嫌疑人——姓张,男,25岁,郑州人。”
“那你们什么时候抓他?”
“已经派人去郑州了。但这个人很狡猾,我们担心他可能已经察觉到我们在追查。”
林语放下手机,心里有些复杂。
他知道,网安出手,BlackCat大概率跑不掉。
但问题是——他留下的“东西”,还在雨云里。
那个“我不舍得动的东西”,到底是什么?
下午六点,林语坐在电脑前,开始检查雨云所有服务器的日志。
他想找到BlackCat留下的“东西”。
但一天的检查,毫无发现。
搬砖狐发来消息:“要不,你先休息一下?这种事急不来。”
“我知道。但我总觉得,那个‘东西’,一定还在我的服务器里。”
“那你想到什么线索了吗?”
“还没有。但我觉得,他说的‘不舍得动’,可能不是威胁,而是…某种暗示。”
“暗示?”
“对。他会不会…在告诉我,他留下了什么‘礼物’,让我自己去发现?”
搬砖狐沉默了一会儿,然后说:“你最近检查过你的数据库吗?”
“数据库?”
“对。你们上线VPS之后,用户的注册数据、财务数据,都放在数据库里。如果他在数据库里动了手脚…”
林语一个激灵,赶紧打开数据库管理工具。
他检查了user表、order表、payment表…一切正常。
他又检查了log表,发现了一个可疑的记录——
三天前,凌晨三点,有一条登录日志的IP显示为“佛山电信”。
但那个时间点,他明明在睡觉。
林语心跳加速。
他顺着这条日志追查,发现这个IP总共登录了三次——每一次都是在凌晨。
而登录的账号,是他自己的管理员账号。
“管理员账号被盗了?”小宏听到这个消息,脸色都变了。
“很有可能。”林语说,“我回想了一下,三天前凌晨,我在睡觉。没人会用我的账号登录系统。”
“那你的账号密码…他没改?”
“没有。他登录了三次,但没有修改任何数据。只是浏览。”
“浏览?”
“对。他看了用户列表、订单记录、财务数据,甚至看了我们的系统架构图。”
“那他为什么不动手?”
林语想了想,突然想到一种可能——
“他知道,如果他现在动手,一定会被我封杀。但他想等着,等我上线更多用户,等我的数据更值钱的时候,再动手。”
小宏听了,脸色更难看了。
“那我们现在怎么办?”
林语沉默了一会儿,然后笑了。
“反制。”
“怎么反制?”
“他不是不动手吗?那我给他一个更诱人的目标。”
林语打开电脑,开始写一个新的功能模块——一个看起来很“方便”,但实际上有漏洞的API。
这个API,他会在黑猫必经的路径上“不小心”留下一个后门。
只要黑猫敢动,他就会抓住他的把柄。
凌晨一点,林语完成了API的开发。
他上传到服务器,然后故意在日志里留下了漏洞信息。
然后,他关掉电脑,躺到床上。
他盯着天花板,心里想着明天可能发生的事。
但这一次,他不再害怕。
因为他知道,这场游戏,他才是最终赢家。
他闭上眼睛,很快就睡着了。
梦里,他看到一只黑色的猫,在雨云里奔跑,然后摔倒。
他走过去,把那只猫抱起来,擦掉它身上的泥。
然后,他把它放在地上,看着它离开。
“走吧。下次别来了。”
第二天一早,林语被搬砖狐的电话吵醒。
“林语!你快看论坛!”
“又怎么了?”林语揉了揉眼睛,打开论坛。
论坛上,出现了一条新的帖子。
标题是:《对林老板的回复:你断我的路,我断你的路》
发帖的是BlackCat。
内容只有一行字:
“昨晚三点你在睡觉的时候,我删了你测试服务器上所有的数据。这是你设局坑我的回礼。”
林语愣了一下,然后笑了。
他打开服务器后台,看着那个测试API的访问日志。
果然,凌晨三点,有人登录了——登录了他故意留下后门的那个测试环境。
而BlackCat登录后,确实删除了测试服务器上所有的数据。
但那些数据,其实是林语写的一个空文件夹,里面装了一堆假数据。
林语截下图,发到论坛上,回复:
“你删的,是我设的蜜罐里的假数据。你踩陷阱了。”
论坛瞬间炸开了锅。
“卧槽,林老板设局了!”
“这波操作太骚了!”
“BlackCat输了!输了!”
林语放下手机,心里终于有了一丝轻松。
他知道,这一局,他赢了。
那个自称猫的黑客,终于踩进了他布的陷阱。
而接下来,他要做的,就是让他一辈子都不敢再来雨云。
下午,林语正在写第三篇技术分析,小宏突然敲门进来。
“林语,有人找你。”
“谁?”
“一个自称‘小U’的用户。他说看到你的帖子,想帮你…”
林语愣了一下,走出去,看到一个戴着黑框眼镜的年轻人站在门口。
他穿着格子衬衫,背着一个厚重的书包,看起来就像个普通的大学生。
“你好,我是小U。”年轻人说,“在论坛上看到你的帖子…想帮你处理工单。”
林语上下打量了他几眼,然后问:“你技术怎么样?”
小U笑了笑,从书包里掏出一台笔记本电脑,打开了一个文件夹。
文件夹里,装满了各种运维脚本和自动化工具。
“这是我自己写的客服系统,可以自动回复常见问题。”小U说,“如果你需要,我可以免费帮你调一下。”
林语看着那些脚本,心里涌起一股奇怪的感觉。
这个人,出现的时机太巧了。
但同时,他的技术能力,可能正是他现在需要的。
他想了想,然后说:“好。你先帮我处理一两天的工单。如果做得好,我可以给你发工资。”
“不用工资。”小U说,“我就是…想帮你。因为我也曾经被人攻击过,知道那种感觉。”
林语看着小U的眼睛,发现那双眼睛里,有一种他熟悉的东西——那种被欺负过之后,想证明自己的决心。
他点了点头。
“好。欢迎加入雨云。”
晚上,林语坐在阳台上,看着广州的夜景。
手机震动,搬砖狐的消息弹出:“那个小U,靠谱吗?”
“还不知道。但我感觉,他不是坏人。”
“你确定?”
“不确定。”林语笑了笑,打字回复:“但有时候,相信别人,也是一种选择。”
“那你相信我吗?”
“当然。”
“那…给你个任务。”
“什么?”
“今晚好好睡觉。别熬夜写代码了。”
林语看着这条消息,嘴角不自觉地扬了起来。
他放下手机,看着远处的高楼大厦。
明天,又是新的一天。
小雨云的注册用户,已经突破了200。
那个叫BlackCat的黑客,也已经被逼出了局。
而接下来,他要做的,就是把雨云做得更大、更强、更稳。
他转身走回房间,准备写下一段代码。
手机再次震动——是论坛的私信提示。
他点开,看到了一条新消息:
“林老板,需要帮忙吗?我可以帮你处理工单,免费的。”
发信人ID:小U。
附件是一个压缩包——一套自制的客服脚本。
林语看着这条消息,笑了笑。
然后,他回复:“好。明天开始。谢谢。”
他关掉手机,重新打开代码编辑器。
新的代码,新的功能,新的挑战。
他知道,这场创业之路,还很长。
但他也知道,他已经不再是一个人。
他有两百个用户支持他。
有一个叫搬砖狐的女孩陪着他。
有一个叫小宏的室友帮他。
现在,又多了一个叫小U的陌生人。
雨云的故事,才刚刚开始。
第19章 小U与风暴前
一
早上七点,林语被手机震醒。
他迷迷糊糊摸到手机,看到小宏发来的消息:“林语,那个小U已经开始回工单了。”
林语揉了揉眼睛,看了眼时间——七点零三分。
“这么早就上线了?”
他打开后台,看到工单系统的记录:从凌晨五点开始,小U已经回复了十二张工单。
每一条回复都标准得像是模板——格式统一,语气礼貌,末尾还带着一句“感谢您的支持,雨云将持续改进”。
林语翻了几条,发现不仅格式标准,内容也对得上。有些工单他之前回复过,还没归档,小U直接引用了他之前的回复,补充了一些详细的操作步骤。
“有点东西啊。”林语坐起来,给小U发了条消息:“早。怎么起这么早?”
小U秒回:“睡不着。正好看到有几张工单没处理,就顺手回了。”
“那些工单的回复…”林语斟酌了一下措辞,“你之前做过客服?”
“没有。但我看了你之前回复的记录,学了学。”
林语愣了一下。
他之前回复工单的风格,他自己清楚——有时候会带点个人情绪,偶尔还会甩个表情包。但小U模仿出来的版本,去掉了那些“不专业”的部分,只留下了标准的流程和礼貌的语气。
“你这是把我的回复风格优化了?”
“也不算优化。就是把你觉得不专业的东西去掉,保留有用的部分。”小U顿了顿,“我写了个脚本,提取了你之前所有回复的关键词和逻辑,然后生成了一套标准话术。”
林语沉默了。
他打开电脑,让小宏把上周的工单记录导出来。
小宏打着哈欠说:“怎么了?工单出问题了?”
“不是。我就是想看看,这家伙到底有多强。”
小宏帮他导出了上周的所有工单记录——共计四十七张,林语亲自回复了三十一张,小宏回复了十六张。
林语一张张翻过去,对照小U的回复记录,发现一个惊人的事实:
小U不仅模仿了他的回复风格,还纠正了几个他之前写错的技术细节。
比如,有张工单问“香港VPS怎么开BBR加速”,林语回复的是“modprobe tcp_bbr然后echo net.core.default_qdisc=fq >> /etc/sysctl.conf”——但实际上,正确的命令应该是先加载内核模块再设置sysctl参数,漏了一步。
小U在补充回复里,把完整的步骤写了出来,还附上了验证方法。
“这家伙…”林语看着屏幕,不知该高兴还是该尴尬。
小宏凑过来看了看,笑了:“哈哈,你的bug被人抓到了。”
“闭嘴。”林语白了他一眼,打开小U的聊天窗口,发了条消息:“刚才看了你的工单回复,有几个地方你补充得很好。谢谢。”
“不用谢。我只是发现有几个问题你没写完整,顺手补上了。”
“那你怎么知道标准答案的?”
“谷歌一下。”
林语看着这条回复,笑了笑。
他想了想,又说:“工单这边你先看着。有处理不了的,直接转给我。”
“好。”
林语关掉聊天窗口,开始处理今天的待办事项。
首要任务:联系香港机房。
二
BlackCat虽然暂时被压制了,但他留下的那个“不舍得动的东西”始终让林语不安。
他决定,把一部分核心服务迁移到更稳定的香港机房。
目前雨云的服务器主要放在三个地方:广州本地机房、香港某小型机房、以及某个三线城市的廉价机房。
广州本地机房是林语通过一个做运维的学长联系的,价格适中,但带宽有限。
香港的小型机房是林语在某个技术帖子里找到的,对方号称“香港高防”,但实际上防护能力一般——BlackCat之前入侵时,这家机房连日志都没保留完整。
而那个三线城市的廉价机房,林语现在已经不太敢用了。
他需要更稳定的合作伙伴。
林语打开浏览器,开始搜索香港的机房服务商。
“香港数据中心”、“香港高防服务器”、“香港BGP机房”…
搜索结果很多,但林语知道,这些广告大多不靠谱。
他需要的是真正稳定、靠谱的服务商——至少要能扛得住DDoS攻击。
林语翻了几页,发现一个叫“志安网络”的香港机房,评价还不错。
他点进官网,看到对方提供香港BGP线路、最高100G防御、7x24小时技术支持。
“100G防御…”林语嘀咕了一下,“好像还行。”
他留了联系方式,填了需求表单。
等了大约半小时,对方的人加了他微信。
“你好,我是志安网络的销售顾问,阿Ken。”
“你好。我是雨云科技的林语。我们最近在找香港机房,看到你们家的服务,想了解一下。”
“没问题。请问你们大概需要什么配置?”
林语把自己的需求说了一遍:10台高配服务器、100M带宽、至少50G防御、主备电源、独立IP段。
阿Ken听完,沉默了几秒。
“林先生,你们是做IDC的?”
“对。我们是做云计算服务的。”
“那你们应该是需要托管服务,而不是租用服务器吧?”
“对。我们自己有服务器,只是需要托管。”
“明白了。我们的托管价格是…”
阿Ken报了一个价格,比林语现在用的香港机房便宜将近20%。
林语心里一喜,但表面上还是很冷静:“嗯,价格还行。那防护能力呢?你们说的100G防御,是真实的还是…
“林先生放心,我们用的是某某公司的清洗设备,经过实测的。如果防御不达标,我们全额退款。”
“好。那能安排个机柜看看吗?”
“当然。你什么时候有空?”
“明天吧。明天下午我去一趟香港。”
“行。你到了联系我,我派人接你。”
林语挂了电话,感觉这个阿Ken还挺靠谱的。
他打开搬砖狐的聊天窗口,发了条消息:“我找到一家新的香港机房,明天过去看看。”
搬砖狐秒回:“价格怎么样?”
“比现在用的便宜20%。”
“这么便宜?不会是坑吧?”
“所以明天去现场看看。如果靠谱的话,就把一部分服务迁移过去。”
“那现在的机房怎么办?”
“继续用。两条腿走路,总比一条腿强。”
“行。你注意安全。香港那边最近不太平。”
“知道了。”
林语关掉聊天窗口,开始准备明天去香港的行李。
这时,小U又发来一条消息:“林老板,中午有空吗?我想跟你聊聊。”
“好啊。你在哪?”
“我在广州。你公司在哪?我过去找你。”
林语看了一眼地址——广州天河区某栋写字楼里的一个创业孵化器。
“珠江新城这边的创业孵化器。你到了告诉我,我下楼接你。”
“好。”
三
中午十一点半,小U出现在林语公司楼下。
他还是那副装扮:格子衬衫、黑色双肩包、黑框眼镜。
“上来吧。我办公室在六楼。”
林语领着他进了电梯。
“你公司挺大的。”小U环顾四周,说。
“就一个孵化器里的工位,不算大。”林语笑了笑,“你那边呢?住哪?”
“在番禺那边租了个单间。”
“番禺?那过来挺远的。”
“还行。地铁一个半小时。”
林语无语了。番禺到天河,地铁至少一个半小时——这家伙早上五点就起来回工单,那得几点起床?
“你这么早起来回工单,不累吗?”
“不累。我习惯早起了。”
进了办公室,小宏正在吃外卖。
“这是小U,我跟你提过的。”林语介绍道。
小宏抬头看了一眼,招手打了个招呼:“你好。你的工单回复我看了,挺6的。”
“谢谢。”小U点点头,看向林语,“林老板,我想跟你谈谈之前说的那个客服系统的事。”
“好。你说。”
小U打开笔记本电脑,调出一个网页。
“这是我写的客服系统。目前已经实现了自动回复、工单分类、知识库管理这三个模块。”他指着屏幕说,“自动回复这块,我用了我之前写的那套话术库,覆盖了目前雨云常见的80%以上的问题。”
林语凑过去看了看,发现系统的界面很简洁,核心功能一目了然。
“你一个人写的?”林语问。
“对。花了大概两周。”
“两周?”小宏差点被饭噎住,“这系统我至少得写两个月。”
小U笑了笑,没说什么。
林语翻了翻系统功能,发现还有一个“智能推荐”模块——可以根据用户的历史问题,推荐相关的解决方案。
“这个智能推荐,是怎么实现的?”林语问。
“我用的是词频统计加上一些规则。目前准确率大概在70%左右。”
“70%已经很不错了。”林语说,“这个系统如果要商用的话,你打算怎么收费?”
小U摇摇头:“我不收钱。就当是我给雨云的赠品。”
“不行。”林语坚决拒绝,“你花了两周时间写出来的东西,不能白给。这样吧,我按市场价给你结算,或者给你股权。”
“林老板,我真不想要钱。”小U看着林语,眼神很认真,“我就是想帮你。因为我知道,一个人创业有多难。”
林语看着小U的眼睛,突然有些感动。
他想了想,说:“那这样吧。系统我先用着。等雨云赚钱了,我再给你分红。”
“好。”小U笑了笑,合上电脑,“另外,我想跟你反映一个问题。”
“什么问题?”
“我发现雨云的工单系统,没有做防爬虫。”
“防爬虫?”林语愣了一下,“工单系统要防爬虫干嘛?”
“我昨天处理了一张工单,客户的ID看起来很像是爬虫生成的。”小U说,“我查了一下,发现那个客户连续提交了十几张工单,内容都差不多——都是问同一个问题。”
林语皱起眉头。
“你说的是哪个客户?”
“ID是51009。一个叫‘测试小号’的账号。”
林语打开后台,查了一下这个账号。
确实,这个账号在过去三天里,连续提交了十三张工单——内容都是“香港VPS怎么购买”。
“这个账号,是不是BlackCat的?”林语问。
“我不确定。”小U说,“但我建议你查一下他的登录IP。”
林语打开日志,查到51009的最后一次登录IP——香港。
“又是香港。”林语嘀咕道。
“如果真是BlackCat,那他应该是在试探我们的工单系统。”小U说,“他可能想通过工单系统,找到我们的数据库入口。”
林语点点头:“有道理。那你有解决方案吗?”
“有。写一个简单的验证码模块,加在提交工单的流程里。”小U说,“另外,建议限制每个IP每天的提交次数,超过上限直接封禁。”
“好。你写吧。代码写好了发给我,我上线。”
“行。”
小U离开后,小宏问:“你觉得这个家伙,靠谱吗?”
“目前来看,挺靠谱的。”林语说,“至少他的技术能力比我们想象的要强。”
“那你觉得他为什么会来找你?”
“不知道。”林语想了想,“可能真如他所说,想帮一个人创业吧。”
“你可别被他骗了。”小宏说,“这年头,套路多得很。”
“放心,我还没傻到什么都信。”林语说,“不过既然他愿意帮忙,我们就先利用他的能力。其他的,走一步看一步。”
四
下午两点,林语接到阿Ken的电话。
“林先生,我们这边已经帮你安排了明天下午的参观。你到了香港联系我就行。”
“好的。谢谢。”
挂了电话,林语开始处理今天的最后一项任务:检查服务器的安全状态。
他登录到核心服务器,查看系统日志和网络流量。
一切正常。
没有异常连接,没有异常进程,没有异常的流量峰值。
但林语总觉得,有什么东西不对劲。
他打开BlackCat之前留下的那个“死亡开关”计划任务——虽然已经被他清除了,但他总觉得,BlackCat可能在别的地方还留有后门。
他花了一整个下午,把雨云所有的服务器都检查了一遍。
没有发现任何异常。
但直觉告诉他,BlackCat不会就此罢手。
晚上七点,林语坐在阳台上抽烟,搬砖狐发来消息:“明天几点去香港?”
“下午两点的车。”
“要我陪你去吗?”
“不用。我自己去就行。你在家好好待着。”
“那你注意安全。香港那边最近不太平,知道吧?”
“知道了。”
“另外,我听说BlackCat在论坛上又发帖了。”
林语打开论坛,看到BlackCat的新帖子——《给林老板的最后警告》。
内容只有一句话:
“一周之内,我让雨云彻底下线。”
帖子下方,已经盖了上百楼。
有人支持BlackCat,有人骂他。
但更多人是在问:雨云还能不能用了?
林语看到这条帖子,心里猛地一沉。
他知道,BlackCat这次不是开玩笑。
如果一周之内,他真的动手了——雨云现有的防御能力,能不能扛得住?
林语想了想,决定提前做一件事。
他打开香港机房的聊天记录,给阿Ken发了条消息:“阿Ken,我明天提前到香港。能安排一下吗?”
“没问题。你几点到?”
“大概上午十一点。”
“好。我派人去接你。”
林语又给搬砖狐发了条消息:“明天上午我就过去。你帮我准备一下服务器的迁移方案。”
“好。你要迁多少台?”
“先把核心业务的十台服务器迁过去。其他的,看情况。”
“行。我今晚加班做方案。”
“辛苦了。明天回来请你吃饭。”
“请我吃好的?”
“当然。”
“那我等你。”
林语放下手机,站起身,走到窗前。
他看着窗外的高楼大厦和川流不息的车流,心里涌起一股复杂的情绪。
BlackCat的攻击预告,像一把悬在头顶的剑。
但林语知道,他不能退缩。
他必须反击。
五
第二天一早,林语坐上了去香港的车。
他一路上都在处理工作,直到车子驶入香港地界,他才放下手机,看着窗外的景色。
香港,还是那个熟悉的香港。
高楼林立,车水马龙,繁华,喧嚣。
但也有些不一样的地方——街上的警察多了,氛围更紧张了。
司机是个本地人,一路都在抱怨:“那些废青,整天搞事,搞得生意都没得做。”
林语没说话,只是看着窗外。
到了机房楼下,阿Ken已经在等他了。
“林先生,你好你好!”阿Ken热情地握手,“欢迎来香港!”
“谢谢。麻烦你了。”
“不麻烦不麻烦。来,我带你上去看看。”
机房在十二楼,整层都是志安网络的机柜。
阿Ken带林语参观了机房的核心区域——恒温恒湿、双路供电、独立的空调系统、防火墙设备、入侵检测系统…
“我们的客户主要是金融公司和电商平台,对稳定性要求很高。”阿Ken说,“所以我们的设备都是顶级的。”
林语一边看,一边在心里评价——确实比他现在用的那家机房要好得多。
“你们这个防火墙,是什么型号的?”林语问。
“某某公司的某某型号,一年能扛800G的流量。”
“800G?”林语有些惊讶,“现在香港机房的防御能力都这么强了?”
“主要是香港这边的攻击太猛了。前几天有个客户的网站被打了三天,我们硬是扛下来了。换别的机房,早就被打瘫了。”
林语点点头。
“那你们这边,有没有什么额外的服务?比如流量清洗、CDN之类的?”
“有的。我们可以配套提供CDN服务,流量清洗也包含在托管套餐里。”阿Ken说着,拿出一份合同,“如果林先生有意向,我们今早签合同,今天就可以上架。”
林语翻了翻合同,条款还算公正。
他想了想,说:“好。今天就签。但我要加一个条款——”
“什么条款?”
“如果你们的防御能力不达标,导致我的服务中断,你们要赔偿我损失。”
阿Ken愣了一下,然后笑了:“林先生,你是我见过最谨慎的客户。行,这个条款可以加。”
两人当场签了合同。
签完后,林语打电话让小宏把十台核心服务器的数据打包,发送迁移指令。
“开始迁移了。”林语说。
“好。这边我已经准备好了。”阿Ken带着林语来到一个空机柜前,“这个机柜,从今天起是你们的了。”
林语看着那个空机柜,心里涌起一股兴奋。
新的机房,新的开始。
六
下午五点,林语回到广州。
他一进门,就打开电脑,登录服务器,检查迁移进度。
十台核心服务器已经成功上架,网络连接正常,服务正在逐步恢复。
他松了口气。
这时,搬砖狐发来消息:“回来了?”
“嗯。刚到家。”
“迁移顺利吗?”
“顺利。新的机房很靠谱。”
“那就好。”
“你呢?方案写完了吗?”
“写完了。但我建议你先看看我的方案,有些地方可能需要调整。”
“好。发给我。”
搬砖狐发来一个Word文档,林语打开,看到一份详细的服务器迁移方案。
方案包含了迁移时间表、数据备份策略、网络配置方案、应急预案等。
林语看着这份方案,心里暗暗感叹:搬砖狐确实是个靠谱的队友。
他想了想,说:“方案我看了。很不错。但有几点我补充一下——”
“你说。”
“第一,迁移期间,建议把核心数据库迁移到新的机房,旧机房只保留缓存和静态资源。”
“好。我改一下。”
“第二,新机房的IP段,建议重新分配。不要跟旧机房重叠。”
“知道了。”
“第三,防御策略上,建议开启流量清洗和入侵检测。”
“收到。”
“第四——”
林语还没打完字,手机突然震动了。
是论坛的新消息提醒。
他点开,看到BlackCat又发帖了——《倒计时开始:六天》
内容很简单:
“六天后,雨云将正式下线。”
“所有还在用雨云服务的用户,建议你们提前备份数据。”
“我是认真的。”
林语看着这条帖子,心里猛地一沉。
BlackCat这次,是来真的。
他关掉论坛,打开搬砖狐的聊天窗口,给她发了条消息:“你看到了吗?”
“看到了。”搬砖狐回复,“这家伙看来是认真的。”
“嗯。所以我们的防御策略要加倍。”
“你想怎么做?”
“我想在每一台服务器上都配置防火墙规则,把所有不必要的端口全部关闭。”
“你打算用什么防火墙?”
“我自己写一个。”
“自己写?你疯了?”
“没疯。我会用Go写一个简单的防火墙程序,只开放必要的端口,其余的统统封杀。”
“你这效率…一天能写完吗?”
“两天。”
“那我来帮你写配置脚本。”
“好。另外,我建议你帮我想想,如果BlackCat真的动手,我们应该怎么反击。”
搬砖狐沉默了一会儿,然后说:“你先写防火墙。其他的,你先别想太多。”
“好。”
林语关掉聊天窗口,打开代码编辑器。
他决定,用Go写一个简单的防火墙程序。
只保留Web端口、数据库端口、管理端口,其余的统统封杀。
他要让BlackCat知道,他可以黑进雨云,但休想黑进他的服务器。
七
凌晨一点,林语还在写代码。
他已经连续工作了八个小时,腰酸背痛,眼睛干涩。
但他不想停下来。
他知道,六天的时间,说长不长,说短不短。
如果BlackCat认真起来,六天内可以把雨云的防御系统完全瘫痪。
而他唯一的应对方式,就是比他更快、更强、更狠。
林语打开一罐咖啡,灌了一口,继续写代码。
手机震动——搬砖狐的消息:“你还在写?”
“嗯。”
“你疯了?都凌晨一点了!”
“写完了再睡。”
“你写完了能怎么样?写完了能被BlackCat不攻击吗?”
“不能。但至少我心里踏实一点。”
搬砖狐沉默了一会儿,然后说:“你那防火墙写的怎么样了?”
“差不多了。还差一个日志输出模块。”
“那你写完了,务必先做个测试,别直接上线。”
“知道了。你也早点睡。”
“我睡不着。我总感觉,BlackCat这次的预告,不像是假的。”
“你怎么知道的?”
“我感觉的。他那条帖子的语气,跟之前不一样。之前他是挑衅,现在是威胁。”
“你分析得太细致了。”
“我是认真的。”搬砖狐说,“林语,这次真的不能大意。”
“我知道。”林语说,“我已经做好最坏的准备了。”
两人沉默了一会儿,搬砖狐问:“如果雨云真的被打瘫了,你怎么办?”
“那就重新来过。”林语说,“反正我也没什么可以失去的。”
搬砖狐没回复。
过了一会儿,她才发来一条消息:“你永远都不是一个人。”
林语看着这条消息,心里涌起一股暖意。
他笑了笑,刚准备打字回复,又弹出一条提示。
“登录博客,有新消息。”
林语愣了一下。
这个点,谁会在他的博客上留言?
他打开博客,看到一条新私信。
发信ID:搬砖狐。
内容是一段加密代码。
林语看着那段代码,发现它看起来像是某种防火墙规则的配置脚本。
他花了五分钟,把代码解密,然后看到了五个字——
“防火墙规则。”
林语愣着,盯着屏幕。
他好像懂了。
搬砖狐用加密代码给他发了一条消息,告诉他——她已经帮他写好防火墙规则了。
而那条消息,藏在一段看起来像是乱码的代码里。
林语嘴角扬起,回复:“收到了。谢谢。”
“不用谢。”搬砖狐秒回,“记住,你永远都不是一个人。”
林语看着这条消息,心里涌起一股异样的感觉。
他关掉博客,打开代码编辑器,发现那条加密代码确实是一个完整的防火墙规则配置脚本。
他按照搬砖狐的规则,花了两个小时,完成了防火墙程序的最后一步调试。
凌晨三点,他终于写完了所有代码。
他测试了一下,没发现bug。
他长舒一口气,关掉电脑,躺到床上。
这时,手机震动了。
是论坛的新消息提醒。
他点开,看到BlackCat又发帖了——
《还有五天》
内容依旧简单:
“雨云的倒计时已经开始。”
“林老板,做最后一件好事吧——把数据备份好,交给用户。”
“否则,五天之后,你什么都留不下。”
林语看着这条帖子,心里涌起一股愤怒。
但他压制住了情绪,关掉手机,闭上眼睛。
他告诉自己:不要被他激怒。保持冷静。
只有保持冷静,才能做出最正确的决定。
只有做出最正确的决定,才能赢下这场战争。
黑暗中,他闭上眼睛,很快就睡着了。
梦里,他看到一只黑色的猫,正一步一步朝他走来。
而他的手里,握着一把剑。