196の日記

セキュリティ系の勉強、その他開発メモとか雑談、忘れそうな計算式などを書き溜める場所になっています. githhubはUnity触っていた頃ものがメイン https://github.com/196kakinuma

Rubyの勉強メモ

ruby関係の勉強を始めたので個人的なメモとか残していきます。チュートリアルに関してはこちらのサイトを参考にして進めていきます。

Gem

ライブラリの事。rubyではGemと呼ぶらしい。railsもgem。gemはグローバルに必要なもの以外はそれぞれのプロジェクトにインストールする。(railsもグローバルには入れるべきではないらしい)

bundler

gem管理ライブラリ。gemのバージョン毎の依存関係とかも見てくれるとのこと。bundlerもgem。

gemfile, gemfile.lock

bundlerが利用する設定ファイル。gemfileにはbundlerがインストールするgemとそのバージョン情報を記載する。gemfile.lockはそれに応じて自動生成される。


グローバルにrailsを含まないプロジェクトの作成

参考にさせていただいたのはこのサイト。上で紹介したチュートリアルクラウドIDEを使っていたのですが、ローカル環境でチュートリアルを進めたかったため、サイト外の手法を利用しました。ちなみにrbenvまでのインストールは完了している前提です。

$ rbenv exec gem install bundler #ruby環境にbundlerのみをインストール
$ rbenv rehash      #$ rbenv exec gem listで現在有効なgem一覧を取得可能

$mkdir newproject #新しいプロジェクトを作る場所
$cd newproject

$ cat << EOS > Gemfile   #railsプロジェクトを生成する目的で一時的にrailsを入れる
source "http://rubygems.org"
gem "rails", "5.2.1" #最新バージョンを調べてください 
EOS
$ bundle install --path vendor/bundle  #railsを vender/bundle 以下にインストール
$ bundle exec rails new sampleproject --skip-bundle #sampleprojectは自分のプロジェクト名をつけてあげる



$ rm -f Gemfile   #プロジェクトの生成が終わったので削除する
$ rm -f Gemfile.lock
$ rm -rf .bundle
$ rm -rf vendor/bundle

$ cd sampleproject 
$ bundle install --path vendor/bundle #プロジェクト内にgemを再インストール

プロジェクト生成に使用したgemは消してしまいますが、生成時にGemfile内に必要なgemの情報が書かれるため、それを利用してプロジェクト内にrailsを引っ張ってこれるようです。おそらく。


vendor/bundleディレクトリは、"容量が多い", "Gemfileによりgit clone先で同じ環境が作れる"との理由で、git管理から外してあげるのが良いそうです。

$ echo '/vendor/bundle' >> .gitignore

以下のコマンドを実行して、ブラウザでターミナルに表示された場所にアクセスできれば完了です。(httpです)これ以降、サーバを立ち上げる際はこのコマンドを使用してください。rails serverコマンドは使用できないです。

$ bundle exec rails server

なお、私が試した時railsの最新バージョンは5.2.1だったのに対して、チュートリアルでは5.1.6であった。5.1系から5.2系になる際にbootsnapというgemが追加されたそうです。これはrailsの起動を早くするものらしく、5.2でデフォルト採用されたとのこと。なので、5.2で上のようにプロジェクトを生成して5.1に戻すと、bootsnapがないよ!ってエラーが投げられます。大人しく初めからrails5.1.6を使用してプロジェクトを作り始めるか、ここのサイトを参考にgemに追加して実行すれば動く模様。


config/route.rb

railsのルーティングファイル。rootとつけたコントローラのアクションがindexページを生成する。

GithubとBitbucket

チュートリアルに登場してたのでメモ程度に。Bitbucketの利点は「共同作業者が一定数以下ならリポジトリを公開しなくても無料、共同作業者が一定数を超えると有料」なところ。Bithubは非公開リポジトリを作成するためには有料アカウントが必要なので、セキュリティ面でチュートリアルのプロジェクトでも非公開を推奨するらしい。

Herokuにデプロイ

ブランチ切って作業して、それをマージせずにmasterをherokuにpushしてしまい詰まりました。エラーは以下のようなものでした。

Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)

解決法はここのサイトの通り。config/database.ymlのproduction設定がsqlite3のままなので修正するのと、herokuにポスグレを導入してデータベースを作成し直すの2点。

$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku run rake db:migrate

herokuにpushする前にあらかじめconfig/database.ymlを変更しておけば、導入の手順は必要ないです。


T-pot観察 #3 2018/10/9~10/17

だいぶ日が空いてしまいましたが、3回目です。と言っても対して知識も増えていないので、いつも通り眺めるだけです。

全体のログ

f:id:thinline196:20181017232121p:plain
f:id:thinline196:20181017232123p:plain
f:id:thinline196:20181017232126p:plain

いつも通りCowrieでは短時間の集中アクセスを度々受けていますね。目立つものとしてはロシアとカタールからでしょうか。カタールから集中的に飛んで来ているのは初めて見ました。しかし、そろそろ物珍しくなくなって来た感じもします。

一方今回きになるのはVnclowpotの観測ログです。若干わかりにくいですが3回波があり全て中国から来ています。日付でいうと11(6時),12(24時), 15(21時)です。

f:id:thinline196:20181017233503p:plain
f:id:thinline196:20181017233505p:plain

攻撃ポートは5900番ですが、調べたところVirtual Network Computing (VNC) で使用しているとのこと。Apple Remote Desktop 2.0 or laterとの表記があるので、画面共有とかそのあたりの機能でしょうか。それぞれ波ごとに別のIPから攻撃が飛んで来ていました。最多のアクセスを観測した2番目の波は全て221.229.204[.]205から来てました。
f:id:thinline196:20181017235533p:plain



よく考えれば、vnclowpotの名前はVNCから来てるんですね。その名の通り低対話型VNCハニーポットということでしょう。ちなみに、低対話型とは特定のアプリケーションやOSをエミュレートして攻撃を待ち受けるものを言い、逆に実際の脆弱性をそのままにして観測を受けるものを高対話型と言います。基本的に私のような初心者が簡単に運用できるのは低対話型でしょう笑




こんな感じで。以上。

T-pot観察 #2 2018/10/5~10/8

めでたく2回目を迎えました。ぱちぱち
気になったこと少しだけ書きます。

目立ったものは2つ。
f:id:thinline196:20181009005316p:plain
f:id:thinline196:20181009005319p:plain


中国からのアクセス(10/5, 17:00~10/6, 2:00)


f:id:thinline196:20181009010836p:plain

112.250.190[.]96からも32477回のアクセスを受けていますね。デフォルトのパスワードを試して侵入しようとしているのがわかります。

ところで以下の一枚めの画像は今回の期間、中国から受けたアクセスです。上で挙げた部分が一番目立ってはいますが、総アクセス数は1万を超えているので継続ていに狙われています。こちらはツールを使っているとの情報が出ています。sshでルートを取りに来ています。

f:id:thinline196:20181009011117p:plain
f:id:thinline196:20181009011127p:plain





ロシアからのアクセス(10/7, 18:00~10/8, 4:00)

f:id:thinline196:20181009011453p:plain
これの内訳を見てみると、全体的に量が増えていることがわかります。HTTPSSMTPのポートにアクセスしようとしています。ロシアとの時差は6時間なのでちょうどお昼頃から夜まで継続していることが伺えます。

f:id:thinline196:20181009012501p:plain

ctf4b NEXT参加して来たよ

東京都立産業技術高等専門学校 品川キャンパスでSECCON Beginners NEXTと言うセミナーが開催されました。そんなにCTFに力を入れてやっているわけではないですが、上級者の方達はどんな思考で問題を解いているのか気になったので、ダメもとで申し込んだ結果参加できてしまいました。


やったこと

【Rev】
crackme系の問題を二問解説。

【Web+Pwn】
SECCON 2017 国内決勝で出題された問題を解説。



印象に残ったこと&感想等

【Rev】
片方は引数にフラグを入れて合っていたら正解と表示されるプログラム、もう一方はフォームが表示され同じくフラグを入力するプログラム。講義には僕は追いついていくことができませんでした。そのくらい知識不足。印象に残ったことは、RevはPlatform+Applicationの構成で問題が出され、アセンブリを読むだけではなくその構成を知っていることも正解にたどり着く近道と話していたこと。知って入れば読み飛ばすことができる部分が増えるので、その分早いし読み間違いも減る。後は、競プロをやると良いとも行ってました。講義を受けて得られたことは、問題を解く流れの把握ができたこと。



【Web+Pwn】
SoundCloudのようなページの自分たちの曲の再生数を伸ばすと言う問題。決勝の際はバグが多くてゲキ冷え問題だったらしい。とても謝っていた。こちらの講義は半分ハンズオンしながら解説の流れだったのでついて行けた。シェルを奪うところまでやったので、やはり楽しかった。得られたことしてはBurpSuiteを知れたこと(この時点で初心者です笑)。



感想

分かってはいたけどNEXTは自分には早い(と言うよりそんなにCTF練習してない)。だけども、今回は上級者さんの思考を知るという目的のもと参加したので、意味はあったと思っている。ツールの使い方とそもそものツールの存在すら把握してないものがたくさんあるので、本格的にやり始めるならそこからかなと。あと初めは自分の守備範囲は絞ったほうがいいですねやっぱり。次参加させてもらうときは普通のビギナーに参加させてもらうと思います!

T-pot観察 #1 2018/10/1~10/4

ちゃっかり記事に数字入れてますが、続くかわかりません。ハニポ(セキュリティも)初心者が自宅のハニポを見て思ったことをテキトーに綴って行きます。


アクセス

f:id:thinline196:20181004160634p:plain

Cowrieへのアクセスが圧倒的に多いですね。時間軸で見ると、いつアクセスが多くなったのかがわかりやすいです。また国別で見ると、、

f:id:thinline196:20181004160605p:plain

特徴が掴みやすと感じました。



大量アクセス(Cowrieで観測)

10/2の12:00~13:30の間にオランダから大量のsshアクセスがありました。134.19.187[.]78から14330回のアクセス。下の画像は同日12:00~14:00の間の記録
f:id:thinline196:20181004155031p:plainf:id:thinline196:20181004155035p:plain


タグクラウドを見ると0101でのアクセスが多いです。実際に上記のIPアドレスからは0101でしかアクセスされていませんでした。下はフィルターした結果。
f:id:thinline196:20181004155800p:plain
f:id:thinline196:20181004155755p:plain



まだ統計日数が少ないですが、Cowrieへは1日平均1000アクセス程度に見えるので集中的にアクセスされていたと思います。



ロシアからのアクセス(Cowrie)

10/1, 9:00~10/3, 21:00の間にロシアから継続的にアクセスが続いてました。
f:id:thinline196:20181004161649p:plain
f:id:thinline196:20181004161652p:plain

メインは443を使用したものでしょうが、他のポートにも量の多いアクセスがきてます。

f:id:thinline196:20181004161821p:plain
上の図のipアドレスからは全て0101でアクセスされていました。


オランダからのとも合わせて、何かDoS攻撃のキャンペーンだったのでしょうか?0101というのは昨年のパスワードワーストランキングには入っていないので、侵入できたらラッキーぐらいのものでしょうか?


中国からのアクセス

10/4, 8:30~9:00にかけて211.143.198[.]232 1704回のアクセスを記録。記録的にはtelnetを使用したJuniper ScreenOS の脆弱性の利用が疑われるとあるが、アクセス数に対して7件のみのヒットだったので、本当かは微妙かも。
一応、ポート2223を調べたところESET Remote Administratorがヒットしました。システム管理者のWebブラウザーからクライアントの設定内容の確認や変更などをネットワーク経由で行えるもの。これに対してroot権限を取りにきてるパターンもあるのかなと思ったりなんだり、、、
f:id:thinline196:20181004223629p:plain
f:id:thinline196:20181004225941p:plain



CVE-2012-5959 CVE-2012-5958

上記での攻撃を8030回観測しています。次に多い脆弱性の利用はCVE-2001-0540の242回なので群を抜いて多いですね。
狙われているのはUPnP機器のSSDP脆弱性でRCEっぽいです。UPnPはそもそもネットワーク上の機器を自動的に発見・接続するもの。その中で使われているプロトコルの一つがSSDPで、機器の探索や応答を行うために使用するとのこと。
cve.mitre.org


それを利用した攻撃?としてこんなものがあるそうです。UPnP機能の自由を奪われ、LAN内への攻撃やプロキシとして利用される可能性があるものとのこと。
「UPnP(libupnp)に脆弱性・WANから攻撃可能」という話の中身を調査してみた

z3pyインストール ubuntu16.04

z3pyとは

Z3はMicrosoft Researchが開発したSAT・SMTソルバである. ブール代数の充足問題に限らず,整数や実数上の不等式を含む充足問題にも適用できる.
z3pyはZ3のPythonバインディングであり,Z3に付属している.

https://wiki.mma.club.uec.ac.jp/CTF/Toolkit/z3py#A.2BMKQw8zC5MMgw.2FDDr-


githubは以下のページ
github.com

環境

python2.7.12
ubuntu16.04 
z3 4.7.1

インストール

git clone https://github.com/Z3Prover/z3.git
cd z3
python scripts/mk_make.py
cd build
make
sudo make install

一応上で終わりなんですが、z3モジュールが見つからないとのことを言われた。


github.com

この質問と同じ状況だったので、もう一回下の順に実行したら通った。

python scripts/mk_make.py --python
python scripts/mk_make.py
cd build
make
sudo make install

hp pavilion ubuntu16 デュアルブート メモ


昔大学でデュアルブートは一度やったので知識的には大丈夫でしたが、色々詰まったところもあったのでメモしておきます。



基本的に以下の記事に沿えばできるので、補足情報を書くぐらいです。
初心者向けLinux入門:デュアルブートでubuntuをインストール


USBメモリ ブートデバイス

まず、フォーマットを必ずFAT32でしてください。読み込まれません。特に64GBとかの大容量のUSBメモリのフォーマット窓にはFAT32が選択肢に出てきません。FAT32専用のフリーソフトを使用してフォーマットしてください。

以下の記事のスクショがそのエラーの例です
起動時のエラー: PXE-E61: Media test failure, check cable....




hp pavilionのBIOS

上のブートデバイスを読み込むにはまずBIOSの設定が必要です。
が、UEFI使われているので、、shiftボタンを押しながら再起動をすれば、オプション画面になるので以下の記事にあるように[トラブルシューティング]→[詳細オプション]→[UEFI ファームウェアの設定]と踏めばUEFIが開きます。

色々と設定がありましたがこの辺りは機種によって様々ですし調べれば出てくるので割愛。ただ大事なこととしては、ブートの優先度の変更はhpのものは[f5][f6]キーでした。これ見逃していると詰まります。

あと、起動時に[esc]でboot settingとかUEFIメニューに飛べるようにしておくと便利。