サイバーセキュリティプログラミング#2.7.1

Linuxサーバーに接続してbh_sshcmd.pyを起動する

教科書通りのコードでは全くうまくいかない。
コードの内容をある程度理解して、必要な引数を変えたりする必要がある。
今回いろいろ試してみたのでどこが必要な操作で必要でない操作なのかが分からない。
そのため、行った動作を羅列してみる。

  • *kaliのsshを有効にする
sudo apt-get install ssh
sudo service ssh start
  • *bh_sshcmd.pyの引数を自身のKaliのIPアドレス, user名, パスワードに変更する
#第一引数IPアドレスは自身のもの、第二、第三引数はデフォルトでは多分kali
ssh_command('***.***.***.***', 'kali', 'kali','id')

教科書内に”ここは例なので変更しなければいけませんよ”と書いてほしい...

サイバーセキュリティプログラミング#語句

出てくる用語がわからない

2章

  • スレッド

プログラムの実行処理の単位の一つ
python のthreadinを使うことで並列処理が可能になる
"target=hoge"のような引数を与えることで呼び出す関数を指定する
21/01/07

  • sys.argv

sys.argvは、Pythonスクリプトに渡された、コマンドライン引数のリストです。リストの先頭、sys.argv[0]はスクリプトの名前です。

https://techacademy.jp/magazine/20629
21/01/07

Secure SHell の略
暗号化された遠隔ログインシステムである
通信内容が暗号化されるため、盗聴されたとしても入力したコマンドやその結果が分からなくなる
マスタリングTCP/IP
21/01/13

サイバーセキュリティプログラミング#2-3

2.5 Netcatの置き換え

この章ではNetcat機能をPythonで代用させるということをする章だった。
コマンドをpythonがinput関数で取得し、それをコマンドシェルで処理するという流れのプログラムだった。

Pythonからコマンドシェルを実行する

プログラム全体が少し煩雑で理解できる部分は少なかったが、とくに疑問に感じた受け取った入力をどのようにコマンドシェルに渡しているのかについて調べてみた。
dev.classmethod.jp

こちらのサイトに書かれてあるsubprocess関数を今回は使用していた。
今回はsubprocess関数に渡したコマンドをそのままOSに渡して実行させていた。

サイバーセキュリティプログラミング#2-2

2.5 NetCatの置き換え

そもそもNetCatが分からない

netcatとは、TCPもしくはUDP接続などを利用して、コマンドラインからデータを送受信するためのツールです。宛先を指定して対象ホストに接続するだけでなく、自らがサーバーになりコネクションを待ち受けるなど、さまざまな通信を行うことができます。

http://www.intellilink.co.jp/article/column/security-net01.html

上記引用元サイトを見たところ通信内容を見るためのアプリケーションのような書き方がされていた。
NetCat越しにSMTPのソフト名やバージョンが攻撃者にみられることになり、その結果セキュリティに問題が発生する恐れがある。
Netcatを使うことで通常使用しないリクエストを送信したり、ポートスキャンを行うことができる。
これは第三者に不用意に行うと犯罪行為となる恐れがある。

このNetcatがなぜ危険につながるのかを調べてみた

Netcatを使用してlistenモードと呼ばれる状態にする。このモードにするとほかのホストからの接続を待つ状態になる。
その際、 -eオプションを使用することで接続してきた通信の入出力先をファイルにすることができるようになる。
そのファイルはシェルにすることもできるので、インターネット越しにシェルを操作することが可能になる。
このようなシェルをインターネット越しに操作できるようにすることをバックドアという。
Netcatにはユーザー認証がないのでこのバックドアは危険性が非常に高い。

まとめ

Netcatは便利だが便利であるがゆえに悪用された際のリスクが非常に高いので、Netcatをインストールしていないサーバーも多く存在している。

サイバーセキュリティプログラミング#2-1

2.2 TCPクライアント
エラー内容

a bytes-like object is required, not 'str'

解決方法

client.send("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")

でエラーが出た。これを、

client.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")

このようにbを付け加えることで解決した。

発生した理由としてはpython2とpython3にある互換性の問題であった。

本ではpython2を使用しているが、私はpython3を使用している。

これ以降で解決できそうにないバージョンの問題があった場合には使用するpythonをpython2にする予定。

 


サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

  • 作者:Justin Seitz
  • 発売日: 2015/10/24
  • メディア: 単行本(ソフトカバー)


 

サイバーセキュリティプログラミング#1.5

Kaliでの日本語関係の処理について

本に載ってある通りにコード中のコメントも記述していこうと思い入力しようとすると、なぜか変換できませんでした。

Googleで検索してみるとバージョンが2019のものが最初に出てきました。
今回私はKaliのバージョン2020を使用しているのでそれに準ずる記事を探しました。

doruby.jp

こちらの記事の通り最初から一通りsudo のupdateやupgradeを行いました。

上記のupgrade や update を行わずに

$ sudo apt-get install -y task-japanese task-japanese-desktop

を行うとUnable to locate...みたいにエラーが出てきましたが、update,upgrade後だと順調にインストールが進みました。

ですが、記事の通り画面が日本語化されることも、日本語入力ができるようにもなりませんでした。

note.com

こちらのnoteを見るとLeafpadなるものが日本語入力をつかさどっているということが分かりました。

無事日本語入力ができました。

日本語入力完了を報告する画像
日本語入力確認の画像

サイバーセキュリティプログラミング#1

オライリーから出されているサイバーセキュリティプログラミング Pythonで学ぶハッカーの思考という本をやっていくのでそれのメモとして記事を書いていきます。

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考 | Justin Seitz, 青木 一史, 新井 悠, 一瀬 小夜, 岩村 誠, 川古谷 裕平, 星澤 裕二 |本 | 通販 | Amazon

 1章 Python環境のセットアップ

この本ではKali Linuxを使用して進めるそうです。

環境構築は毎回躓くが避けては通れない壁だと思います。

今回も例にもれず環境構築で苦戦しましたので、私自身がどのように解決したかをメモしていければと思います。

まず、Kali Linuxをインストールするのですが、私は初LinuxでしたのでVM Wareをインストールするところからでした。

VMware Workstation Player のダウンロード | VMware | JP

ここからインストールしました。

Kaliは

Kali Linux Custom Image Downloads - Offensive Security (offensive-security.com)

ここからインストールしました。

ここからが一番苦戦しました。

まず、Kaliにデフォルトで入っているPythonはバージョンが2.7でした。

問題はpipのインストールでした。

本に書いてあるやり方ではエラーが出てしまいインストールできませんでした。

unable to locate ...みたいなエラーが出てしまいました。

curl https://bootstarap.pypa.io/get-pip.py -o get-pip.py 

でpipのインストールはできました。

次に、pythonIDEをダウンロードするのですが、これはwingというものを使用すると本には書いています。

こちらも本の記述通りにダウンロードはできません。

単純にpathとバージョンの違いが考慮されていないというだけでしたが...

私は普段windowsを使っており、そこでのテキストエディタVScodeを使用しています。

なのでこの先どのような不都合が起こるのかはわかりませんがKaliでもVScodeを使用してpythonを実行していこうと思います。

VScodeをKaliで使用する方法はグーグルで検索すればすぐ解決しました。

Linuxわからない...