首页 网络安全 安全学院 查看内容

详解系统端口监视报警器编写---从原理分析到最终安装包制作

2009-5-13 11:18 664 0

摘要:   前言与准备工作     在以前的手册上也有过介绍DIY系统防御程序的文章,可是基本上用的不是vb就是C语言,对于刚入门的新人来说,虽然很感兴趣,...
关键词: nbsp 端口 exe 文件 程序 运行 一个 监听 报警 portscan

  前言与准备工作     在以前的手册上也有过介绍DIY系统防御程序的文章,可是基本上用的不是vb就是C语言,对于刚入门的新人来说,虽然很感兴趣,但是动手实践却被挡在了门外,到头来只能是看看源代码而已。我觉得只有亲自动手去做了,去编译了,去运行了才能真正的去掌握和理解一套程序的编写思路和原理。   编写程序最难的不是语言学的多少,应用的如何。而是这个程序的运行思想,也就是编写思路才是最重要的!刚入门的新人一定要培养起来这么一种观念:软件只是被用来减轻我们重复劳动用的,不是黑客的全部也不是在入侵时最重要的东西。最重要的是一双善于观察的眼睛和一路灵活迅捷的思维。 好了我们来看看这次我们要编写的程序的一些基本功能和编写它所用到的一些材料。 系统监视器功能简介:软件在后台自动运行后会监视本机的一些危险端口,如果发现非法连接或者扫描时便会在本机给出一个可视化的警告窗口,同时断开非法连接。 编写所需要的材料:6个新建的文本文档、nc.exe 、批处理潜行者(编译工具)。                                   第一步、原理举例分析   其实,这个端口监视报警程序运用的最主要的程序就是NC.exe。NC又被称为“网络军刀”,其用法多样,很实用。老鸟们都认识它吧,新人不知道的可以去百度或者google查询一下,我就不多说它了。在这里我们着重用到的是它的一个远程正向连接后门的命令,它具体是怎么使用用呢,我们来举个例子:首先在A机上运行命令“nc9.exe -L -vv -p 2102 -e cmd.exe”,然后在B机运行 “telnet   A机IP 2102”,在B机上便可以得到一个A机的cmdshell了。看到这我们想一下如果将“nc9.exe -L -vv -p 2102 -e cmd.exe” 中给B机shell的cmd.exe换成calc.exe会出现什么情况呢?我试了一下,在B机连接之后,没有出现cmdshell。但是在A机上计算器的运行窗口却出来了!也就是B机在连接A机的端口时被NC监听捕获,通过参数-e调用运行了calc.exe!看到这,聪明的你们一定想到了,我们这次编写的端口监听器无非就是将-e 后面的cmd.exe替换成我们的一个可视化报警窗口程序而已。   原理大致上就是这样,但是在我们程序的编写过程中有许多的细节性质的原理很重要。例如监听后如何避免影响我们对监听端口的使用问题,如何进行不间断的实时监控,这些都是我们要在后面解决的问题。                           第二步、编写组件源码分析   拿出准备好的6个新建文本文档,开始编写各个组件,编写完毕后下一步再组装。首先我们从简单的开始,首先编写我们的可视化报警框,实际就是一个vbs消息对话框。简单吧?代码如下:msgbox "报告!危险端口检测到可疑扫描或连接入侵!",16,"端口监控警报" 自己写的时候,注意标点符号必须是英文的哦。然后将这个文本保存为bj.vbs文件,放在一边待用。然后我们再拿来2个文本文件,分别写入以下代码:     Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "PortNumber"=dword:00000133 这段代码保存为307.reg文件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] "PortNumber"=dword:00000133 这段代码保存为3389.reg文件 上面的307.reg和3389.reg文件编写完成后,放在一边待用。     下面到我们的主体监控文件的编写了,同样是使用文本文件,输入以下代码: nc9.exe -L -vv -p 3389 -e bj.exe|nc9.exe -L -vv -p 23 -e bj.exe|nc9.exe -L -vv -p 4899 -e bj.exe|nc9.exe -L -vv -p 139 -e bj.exe|nc9.exe -L -vv -p 445 -e bj.exe|nc9.exe -L -vv -p 135 -e bj.exe        这一段便是我们的监控文件代码,我们把它保存成为portscan.bat,我们在这里再注意一个参数和一个特殊符号:参数-p,它后面的数字便是我们要监视的端口,大家可以自行更改。符号“|”在一个管道符,也就是它前后的命令可以同时执行,这样我们就可以同时监控好多个端口了。说到这再说一个和它有点关系的符号“&”它的作用是只有当它前面的命令执行成功后才执行它后面的命令,感兴趣的可以记一下,我们这里用不到这家伙。好了, 据我们第一步讲到的原理,大家已经注意到了,我们这里调用的是 bj.exe,我这个这个bj.exe就是我们的可视化报警框吗?是我们刚才写好的那个bj.vbs编译成exe的文件吗?注意了:不是的!它不是bj.vbs!但这里为什么不是bj.vbs而是这个bj.exe呢?有人看到这说:直接将刚才那个bj.vbs编译成exe文件放在这里,不是也可以达成报警的目的吗?没错,是可以达成报警的目的,可是在报警完毕以后呢?这个程序就停止了运行,不会在继续监听了。也就是说在NC将bj.vbs触发后,bj.vbs弹出了警告框。之后一切就归于平静了,因为nc已经完成了自己的使命,bj.vbs也完成了自己的使命!没有人再次唤醒portscan.bat这个程序运行nc监听端口了,除非用户在看到一次报警完毕后再次立刻手动运行portscan.bat!这样很不现实,有没有可能再一次报警完毕后,能自动的将portscan.bat调用运行呢?答案是肯定的!!于是我们的上面代码中的bj.exe便出现了.   Bj.exe的代码,同样是在文本文档中输入,完毕后保存为bj.bat文件。(bj.exe是bj.bat编译后的exe文件) taskkill /IM nc.exe /F start bj.vbs start portscan.exe Exit 大家仔细再看一下这段代码,只有四句。但是这四句在整体中的作用可不能忽视,第一句"taskkill /IM nc9.exe /F"。有些基础的可以看出来,这是在结束nc的进程,为什么要在一开始结束nc的监听进程呢?原因是这样的,这个程序是在端口被触发后被nc调用的。如果不结束nc的进程我们继续往下看,它会在第二句打开报警窗口,在第三句再次运行portscan.exe(portscan.bat编译后的exe文件),第四句结束自己。这样nc又被启动起来监听了,但是原来的进程还在!如此,如果入侵者反复连接或者扫描的话,我们本地机子上的nc进程岂不是要“新旧累计”的无可附加,不计其数了吗?所以我们在第一句必须强制结束上一次监听的NC的进称,在报警后再重新打开新的nc监听,始终保持一个固定的nc进程数量。这样一来,通过这个bj.bat 我们就可以达到既报警又重新调用监听实时监控的目的了!   至此,我们的主体程序已经编写完毕了,其中portscan.bat和bj.bat需要用批处理潜行者编译成同名的exe文件,特别要注意的是必须编译成隐藏窗口运行的后台程序。到这里我们的307.reg和3389.reg还没有用上,它们是用来干什么的呢?实际上它们是用来改变机子3389终端默认端口的,我们在制作报警器的时候就因该想到:一个软件制作出来它的使用者可能是多种多样的,使用环境也是多种多样的,我们要最大限度的使得软件的兼容性提高!如果编写的软件只能在你的机子上使用,那它还有什么意义?所有的软件编写都是这么一个道理,包括病毒的编写也一样。希望新人记住这一点!                    第三步、安装包的分析及其制作   下面我们看看安装程序的制作,我们需要这个报警器在安装完毕后自动运行,在开机后也自动运行,这样我们必须要将portscan.exe放到启动项里面去。而且它监视了3389端口和23号端口,为了不影响我们自己正常的使用,我们需要将这两个默认端口在程序安装的时候就自动更改成我们自己定义的端口。让3389和23成为一个“蜜罐”式的诱惑端口。并且我们还需要将上面零散的组件放在一个文件夹中规整。这么多的要求,我们必须在安装的时候一次完成它,其实我们完全可以借助MSI安装打包程序来做,但是我们还有系统自带的更加简单易用的打包安装软件--rar压缩软件。但是我们一次要完成那么多任务还是需要一个帮手的,我们的6个文本文件就剩1个了,就用它吧!输入以下代码:     将其保存为setup.bat,然后用批处理潜行者编译成exe文件,最好编译成隐藏后台运行的同名文件。在这里说一下307.reg和3389.reg如何自定义端口,在"PortNumber"=dword:00000133中"00000133"是数字“307”的十六进制转换,也就是说端口是307,但是在reg文件中要写成它的十六进制数值。   下面我们来利用RAR制作自解压包的安装程序,我们先来检查一下现在已经编译号的软件:bj.vbs、307.reg 、3389.reg、portscan.exe、bj.exe、nc.exe 然后我们把它们一起压缩到一个rar里面(如图1)                           图1 然后,我们打开压缩好的rar文件,制作自解压文件.在自解压的高级设置选项里面设置解压路径为 %windir%\,解压后运行文件为%windir%\setup.exe,然后继续在“模式”标签、“更新”标签、“文本和图标”标签分别按图2、图3、图4、图5设置。这里要说的是“文本和图标”标签的设置,ICO图标大家可以自己随意去找,图上只是举例。                                 图2                     图3                     图4                       图5 至此,我们的端口监视报警器算是做完了。大家可以去试验一下吧!                                     写在后面的话 其 实,这个程序是很容易编写的,适合于新上手的新人拿来做练习。不过这个不是我写这篇文章的本意,我不希望刚入门的新人整天沉溺的琢磨如何刷Q钻、如何盗Q 币上,那样不会对你们有任何提高的。还有就是传达一种编程的思想:比如NC本来是入侵的工具,我们这次用到的核心命令也是一个后门命令,可是只要你稍微转 变一下思想一个防御的工具便在你的手中诞生了,与原来的本性截然相反。在这个简单的编写过程中,这个程序要能正常运行起来,要能达到我们的目的,也是需要 一定的思维转换的!对新人也是一个很好的编程逻辑的锻炼!好了,希望大家喜欢这篇文章。我的ID:夜翼
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部