用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

Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互的更多相关文章

  1. Python 黑客 004 用Python构建一个SSH僵尸网络 01 简介

    用Python构建一个SSH僵尸网络 01 简介 一. 构建一个SSH僵尸网络的流程图: Created with Raphaël 2.1.0手动操作,实现通过SSH连接目标服务器(手动)用 Pexp ...

  2. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

  3. python 黑客书籍 ——扫描+暴力破解

    https://legacy.gitbook.com/book/germey/net-security/details 网络安全 介绍 构建一个端口扫描器 利用Pexpect模拟SSH连接 利用Pxs ...

  4. jenkins构建一个python项目

    Jenkins发布后端python代码 “系统管理”“管理插件”“已安装” 检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它 ...

  5. 从零构建一个简单的 Python Web框架

    为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...

  6. Python 之父再发文:构建一个 PEG 解析器

    花下猫语: Python 之父在 Medium 上开了博客,现在写了两篇文章,本文是第二篇的译文.前一篇的译文 在此 ,宣布了将要用 PEG 解析器来替换当前的 pgen 解析器. 本文主要介绍了构建 ...

  7. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  8. 用python构建一个多维维数组

    用python构建一个二维数组 解法? 方法1: num_list=[0]*x//表示位创建一个一维数组为num_lis[x],且数组中的每一项都为0 num_list=[[0]*x for i in ...

  9. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

随机推荐

  1. Python3.6.0安装

    1.安装 具体详情请参考下图: 双击安装包:   勾选“add  python 3.6 to PATH”这样可以自动生成环境变量,选择“Customize installation”自定义安装. 2. ...

  2. python 类的定义和继承

    python 2 中类 一.类定义: ? 1 2 class <类名>:   <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性如果直接使用类 ...

  3. CodeForces - 633H :Fibonacci-ish II(正解:莫对+线段树)

    Yash is finally tired of computing the length of the longest Fibonacci-ish sequence. He now plays ar ...

  4. CodeForces - 438D: The Child and Sequence(势能线段树)

    At the children's day, the child came to Picks's house, and messed his house up. Picks was angry at ...

  5. CODEVS 1174 靶形数独

    题目描述 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地 迷上了数独游戏,好胜的他们想用数独来一比高低.但普通 的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z ...

  6. CodeSmith 基本语法(二)

    CodeSmith之四 - 典型实例(四) CodeSmith API文档 (三) CodeSmith 基本语法(二) CodeSmith 图形界面基本操作(一) CodeSmith的C#语法与Asp ...

  7. Makefile中的路径

    使用 $(shell pwd) 可以在Makefile中指定为当前Makefile所在目录的路径

  8. install命令和cp命令的区别

    基本上,在Makefile里会用到install,其他地方会用cp命令. 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: 1.最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件 ...

  9. canvas绘制中的API

    canvas绘制Z 先贴代码吧: /** * Created by Administrator on 2016/1/26. */ var i; function draw (id){ var canv ...

  10. Python unittest excel数据驱动 写入

    之前写过一篇关于获取excel数据进行迭代的方法,今天补充上写入的方法.由于我用的是Python3,不兼容xlutils,所以无法使用copy excel的方式来写入.这里使用xlwt3创建excel ...