zoukankan      html  css  js  c++  java
  • Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互

    用Python构建一个SSH僵尸网络-02 手动与SSH交互 — 登录SSH服务器端的 root 用户


    我的电脑(攻击者)的系统:Ubuntu14.04 ; 用户名: aobosir@ubuntu:~$
    被攻击对象电脑(模拟的SSH服务端)的系统:Ubuntu16.04 ; 用户名:aobo@ubuntu:~$


    这一节,我们来手动的使用 SSH 连接目标电脑。

    构建僵尸网络的第一件事情你知道是什么吗?嘿嘿,就是找一个目标服务器做为攻击对象。目标服务器就是一个启动了SSH服务端的电脑。(后面我们都将目标电脑称为:被攻击的电脑)
    所谓我需要先找一个电脑,将它搭建成被攻击的电脑。


    我找了一台 安装了 Ubuntu 16.04.10 LTS 系统的电脑,准备用它来模拟被攻击的对象。

    我们先查看 被攻击对象我的电脑IP 地址都是什么:(执行 ifconfig 命令就可以得到电脑的 IP 地址。)
    被攻击对象的 IP

    inet addr:192.168.14.128

    我的电脑的 IP

    inet addr:192.168.14.130

    现在将它们相互 ping ,看看能不能正常 ping 通。如果可以正常 ping 通,我们继续进行下一步。(我现在的情况,它们两个是同一个局域网里面的两个虚拟机,当然是可以 ping 得通啦。)


    接下来,在 我的电脑 上执行下面的命令,来测试通过 SSH 连接被攻击对象。

    $ ssh root@192.168.14.128

    输出错误:

    ssh: connect to host 192.168.14.128 port 22: Connection refused

    Q: 对于:执行 ssh localhost 命令,会输出错误信息:ssh: connect to host localhost port 22: Connection refused 的问题,要如何解决?

    A:
    原因,我们在 被攻击对象上找。

    先来分析可能的原因:
    1 . 是不是因为被攻击对象 的ssh 服务端 没有启动?我们在服务器电脑上执行下面的语句:

    ps -e | grep ssh

    输出:可能是什么都没有;或者是下面这样的输出:

     3091 ?         00:00:00 ssh-agent

    这就说明:被攻击对象(目标电脑) 没有启动 SSH 服务端。

    知识点:
    ssh 是客户端
    sshd 是服务器端的
    ssh-agent ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent启动之后,如果通过公钥做身份验证,只需第一次输入密码,以后ssh-agent会帮你自动输入。

    现在知道了导致 Connection refused 问题的原因:被攻击对象电脑没有启动 sshd 。所以,在被攻击对象电脑上,执行下面的命令,启动它:

    $ sudo /etc/init.d/ssh start

    如果你的输出是下面这个样子的,说明被攻击对象电脑 没有安装 ssh 服务端

    sudo: /etc/init.d/ssh: command not found

    这个时候安装 openssh-server 就可以。就执行下面的语句:

    sudo apt-get install -y openssh-server

    下载完成后,启动它。

    成功的输出:

    $ sudo /etc/init.d/ssh start 
    [sudo] password for aobo: 
    [ ok ] Starting ssh (via systemctl): ssh.service.
    $ 

    现在我们查看一下,被攻击对象电脑是否真的启动了 SSH 服务端。在被攻击对象电脑上执行 ps -e | grep ssh 命令。输出下面的一条信息,说明 SSH 服务端 已经在 被攻击对象电脑 上成功启动了。现在 被攻击对象电脑 就是一个 SSH服务器

    10237 ?        00:00:00 sshd

    折腾了半天,至于将准备工作做完了。

    下面使用三步,手动用个 SSH 连接 被攻击对象电脑


    第一步:

    OK,现在在 我的电脑 上执行: ssh root@192.168.14.128 来尝试连接 被攻击对象电脑。输出:

    $ ssh root@192.168.14.128
    The authenticity of host '192.168.14.128 (192.168.14.128)' can't be established.
    ECDSA key fingerprint is 43:c3:7f:d0:e3:0f:d0:f7:d1:45:1b:f1:8d:b9:8b:c5.
    Are you sure you want to continue connecting (yes/no)? 

    它的意思就是说:无法确定主机 “192.168.14.128” 的可靠性,需要你确认 ECDSA 密钥指纹,并且问题你是否要继续连接?

    第二步:

    我们直接输入: yes

    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.14.128' (ECDSA) to the list of known hosts.
    Connection closed by 192.168.14.128
    $ 

    它的意思就是说:永久性的将 “192.168.14.128”(ECDSA)添加到已知主机的列表中。但是莫名其妙的是,”192.168.14.128” 这个被攻击对象电脑 将这次的连接给关闭了。

    所以我们在再 我的电脑上执行:ssh root@192.168.14.128 命令:

    aobosir@ubuntu:~$ ssh root@192.168.14.128
    root@192.168.14.128's password: 

    现在可以了,直接输入 被攻击对象电脑 root用户的密码就可以了。

    对于所有的 Linux系统, root账号默认是没有密码的,但是第一次启动root时,还是要你输入密码。所以对于Linux系统第一次切换到root账户前,要设置root密码。所以,如果你的 被攻击对象电脑 一次 root 用户都没有使用过,那么它是没有 root 密码的,所以对于 我的电脑 来说:在输入 被攻击对象电脑的 root 用户的密码的时候,就永远是提示:Permission denied, please try again.
    所以,你遇到了这种情况。你需要参考这篇博客:Linux 系统设置root 用户的密码 来为 被攻击对象电脑 设置 root 用户的密码。

    我现在知道:被攻击对象电脑 root 用户的密码 是 123456,所以我们直接输入。我们输入的 被攻击对象电脑root用户的密码是正确的,但是报如下信息:

    Permission denied, please try again.
    root@192.168.14.128's password: 

    这个是由于:安全期间 ssh 服务默认没有开 root 用户的 ssh 权限。

    解决办法: 来到 被攻击对象电脑,修改 rootssh 权限。
    打开 /etc/ssh/sshd_config 文件

    sudo gedit /etc/ssh/sshd_config

    PermitRootLogin no或者PermitRootLogin prohibit-password 改为 PermitRootLogin yes
    再执行 sudo /etc/init.d/ssh restart 重新启动 ssh 服务端 (SSHD)。

    $ sudo /etc/init.d/ssh restart 
    [ ok ] Restarting ssh (via systemctl): ssh.service.
    $ 

    Ok ,现在再来在 我的电脑 上执行 ssh root@192.168.14.128 命令试试看:

    aobosir@ubuntu:~$ ssh root@192.168.14.128
    root@192.168.14.128's password: 
    Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    143 packages can be updated.
    8 updates are security updates.
    
    Last login: Thu Sep  8 01:48:43 2016 from 192.168.14.130
    root@ubuntu:~# 

    搞定

    退出的话,执行命令 logout ;或者 执行命令 exit ;或者 按Ctrl + D ,都可以退出 在 我的电脑 上登录的 被攻击对象电脑root 用户。

    root@ubuntu:~# logout
    Connection to 192.168.14.128 closed.
    aobosir@ubuntu:~$ 


    总结:
    那么这一节,我们将制作SSH僵尸网络的准备工作做完了,并且我们也手动的尝试在 我的电脑 登录 被攻击对象电脑 root 用户。
    下一讲,我们将不再是手动的将电脑(我的电脑)与服务器(被攻击对象电脑)向连接了,而是使用一个 Python 的第三方库,来帮助我们自动的进行本节教程中的连接。
    简单的说,下一节的任务,就是来实现一个简单的自动化操作 — 用PexpectPython 第三方库)与SSH交互。




    参考网站:
    [已解决]SSHD运行命令有错误(OpenSSH-Server)
    http://forum.ubuntu.org.cn/viewtopic.php?t=36681
    ssh服务常见问题总结
    http://desert.blog.51cto.com/779694/175333

  • 相关阅读:
    涂抹mysql笔记-安装mysql
    使用Oracle DBLink进行数据库之间对象的访问操作
    mysqldump备份与恢复笔记
    linux6下源码安装mysql5.6
    虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
    linux添加zabbix service并开机自动启动
    理解Linux系统负荷load average
    oracle体系结构理解
    C#中Abstract和Virtual[转载]
    WPF后台写ControlTemplate总结
  • 原文地址:https://www.cnblogs.com/aobosir/p/5928560.html
Copyright © 2011-2022 走看看