zoomzoomzoom

解決方法の共有に主眼を置くブログ・他雑談

tmuxに惚れたって話(激遅

黒い画面で操作するのが好きです。
たくさんterminalを出すのもアレなので、一つの画面でたくさんの接続を管理したいと考えたわけです。
じゃあtmuxだよね(唐突
 
インストールは 
sudo apt-get install tmux(Ubuntuの場合
 
"セッション"、"ウィンドウ"、"ペイン"というtmux業界用語あり。
知ってると幸せになれる。意味はググってください。
 
基礎コマンド(頭で理解しないで指で覚える)
 
tmux tmux起動
tmux new-session -s セッション名 セッション作る
tmux kill-session -t セッション名  セッション消す
 
Cb+c ウィンドウ新規作成
Cb+w ウィンドウリスト
Cb+& ウィンドウ閉じる(exit)の方が早い
Cb+n 次のウィンドウ(vimの動きの方が早い)
Cb+p 前のウィンドウ(vimの動きの方が早い)
Cb+,  ウィンドウリネーム
Cb+d ディタッチ(保存してやめる)
Cb+tセッション名 アタッチ(再開する) 
 
Cb+t 時計をだす
 
 
tmuxの設定は ~/.tmux.conf に記述する
source ~/.tmux.confで反映する。
 
以下設定(その内追記します) 
# vimキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# | でペインを縦分割する
bind | split-window -h
# | でペインを縦分割する
bind - split-window -v
 
 
 
 
設定に関しては近いうちgitでdotfileめぐりします。

シェル芸(awk)

「こういうデータを持ってるんだけど、こういう風に加工したいな」という願望は、大層なプログラムを作らなくても実現できる。

 

シェル芸(ワンライナー)でデータ加工をよくしています。

シェル芸はコマンドをひたすら覚えるのではなく(覚える人もいるのかもしれませんが自分にはムーリーマン(ムーニーマン的なテンポで))、どういう風な考え方でそれを書いたのか、その書き方を採用したのかという頭の働かせ方の方が大事だと思うんです。

というわけでシェル芸の王様(と勝手に最近おもっている)awkコマンドを使う上での頭の働かせ方of mineを書きます。読んでね。

 

1.awkはパターンとアクションでできている。どちらかがあればいい。

2.まずファイル各行の情報を使って連想配列を作ってしまって、END句で一気に連想配列を使って処理するという考え方。

3.a[$1]=$2 という記述で、連想配列キーを無理矢理第一フィールドの文字に設定し、かつ代入も同時におこなう。

4.#! /usr/bin/awk -f をスクリプト作成時に書いておけば、実行時にファイル名を引数に指定できる。

5.awk整形→他コマンドで整形(sortとか)→awk整形 のように他コマンドを挟んでもよい。

6.特定の文字列の後にスペースを入れたいなら、printfの利用を考える。例)printf("%s ", $0) 

7.不要なフィールドは$1=""のように空文字で上書きするという考え方。

 

awk最高。追記あればこの記事に書きます。

SECCON for Beginners参加します(おそらく)

10月7日に開催予定のSECCON for Beginnersという集いに参加しようと考えています。

スケジュール | SECCON 2017

 

目的:

・独学でわからなかった箇所を教えてもらえる師匠を見つける。

・DEFCON出場を本気で狙っている同士・師匠を見つける。

・セキュリティ事始めを体験する。

 

約1か月あるので、それまで一生懸命お勉強して不明点を溜めまくりたいでつ。

解析楽しい。

 

追記(更新日:20170920)

参加申し込みしました。抽選に受かった場合、現地でどうぞよろしくお願いいたします。

バイナリ解析 問題を解く2(書評)

バイナリ解析でネット検索していると、下記の本に出会った。

http://yaneu.com/book/misaki/

 

萌え萌え感満載の本で、まさに私が読みたかった本であった。

 

 

 

 

 

変な誤解をされそうなので、もう一度表現しなおすと、

萌え萌え感満載の本で、内容はレジスタの利用方法、処理の追いかけ方、処理を変更する方法が詳細に解説されている、そういった意味で、まさに私が読みたかった本であった。また、細かいところではあるが、ESIやEDIといったレジスタは、なぜ他のレジスタのようにHigh,Lowと区切って使われないのか、という部分など、基礎事項・基礎単語の補足情報も豊富に載っておりとても勉強になった。

 

実際にこの本の解説に従ってデモソフトを、アセンブラを解読しながら、自分の思うように操る体験をすることができた。もう一度この本を復習し、「本を見ないで」OllyDbgを操れるようにする。

 

この本で初めて知ったこと:

・WebTrap:特定のソフトがインターネットにアクセスするのを遮断する機能。

ロジックボム:条件が整うと発動するウィルスや破壊ソフトのこと。

・クラックするのに一番大切な心構えは「一番脆いところに着眼すること」であって、全体を理解しようとすることではない、という事。

・クラックの基本は条件分岐を書き換えること。

・SYSENTERとSYSCALL命令は戻りアドレスを保存しないで制御が移る

・RETNとRTNは同じ

・RET 4:RETするときにESPのアドレスを+4する。

・Shift-JISとUnicodeの見分け方:利用しているAPIの末尾の文字がAだったらANSI(Shift-JIS)、WだったらUnicodeのことらしい。文字列検索をする前に文字コードを適切に設定する際に参照する。

・.textセクション:プログラムコード領域

・.rdata, .dataセクション:文字列置き場

・.rsrc:アイコン等置場

・Ollydbgでハードウェアブレークポイントを利用する時には、DR0~DR7というデバッグ用のレジスタがあり、これを利用するためコード自体が変更されない。

・hooking:インポートセクションの中から任意のWindowsAPIの実行アドレスを特定してそれを書き換えてしまうことで、自分の実行したい処理を介在させること

・DLLInjection,function interception:呼び出し先のモジュールとそっくりのモジュールを作り出して、そのモジュールを使わせてしまうこと。またその結果処理内容を傍受すること。

バイナリ解析 問題を解いてみる1

昨日「CTF binary writeup」の検索ワードでたくさん勉強の資料はヒットすることが分かったので、GoogleSEOアルゴリズムにあやかって一番上のサイトから攻略していくことに。

 

1ページ目の検索結果が終わるころには、自分なりに課題が見つけられるようになっていると期待。

 

本日は、file,strings,IDAPro(free)の使い方と、基礎的なAssembly Languageの記法についてお勉強。

file:対象がどのようなファイルか情報を表示

strings:ファイル内の表示できる文字列を表示

IDAPro‘:強力な逆アセンブラ 分岐させたい方に強制的に飛んだりできる。

Assembly Language:マシン語を人間が読めるようにしたやつ。四則演算と条件分岐の基礎的なものから覚えていく。

 

本日勉強させていただいたサイトはここ。感謝をこめてリンクぺた。

CTF for ビギナーズ バイナリ講習資料

 

(残り:2998日)

バイナリ解析 16進数に慣れるための記事

バイナリ解析をしていると、16進数によく出くわす。16進数は2進数に変換しやすいらしいのだが、どうもバイナリアンは暗算でいろいろやってしまうらしい。というわけで脳内変換ができるようにするにはどうすればいいかなと検索してみました。

 

いい記事があったので、ご紹介。

暗算で 16 進数を 2 進数に変換する方法 | プログラマーズ雑記帳

FF(16進数の掛け算)を覚えよう - やねうらお−ノーゲーム・ノーライフ

| 500円で始めるPIC

へっぽこ講師の備忘録: 16進数の九九(FF?)表を作ってみた

 

記事をまとめると、「覚えましょうね」ってことらしい。

特に覚えることは、

・16,32,48,64,80,96,112,128(左から10h,20h...)

・A = 10 , B = 11 , C = 12 , D = 13 , E = 14 , F = 15

・補数は、A , B , C , D , E , F についてそれぞれ、6 , 5 , 4 , 3 , 2 , 1

・ほんとに補数大事。

・FF表(16進数の九九)

 

通り過ぎる車のナンバーを四則演算で10にする遊びをよくやっていますが、今度は16進数に変換する遊びに切り替えようかな。

バイナリ解析 準備

バイナリ解析を行うための準備を書く。参考にするのは、セキュリティコンテストチャレンジブック。本日は解析ツールのインストールのスクリプトを紹介(と言ってもコマンドの羅列にすぎない)

Amazon CAPTCHA

 

前提として、、、

環境はマルウェアのような挙動を解析対象がした場合にどうなってもいい環境=仮想環境を利用する。Ubuntuの14.04と16.04をそれぞれ32bitと64bitでVMWareにinstall.イメージダウンロードとインストールだけで結構時間がかかるので注意。

 

 

解析ツールのインストール(14.04で問題なく動作):

#strace

sudo apt-get install strace

 

#ltrace

sudo apt-get install ltrace

#radare2(useful tools)

sudo apt-get install git

 

#ghex(binary editor)

sudo apt-get install ghex

 

#if you dont have gdb and objdump in your system already. (gdb:debugger, objdump:disassembler)

sudo apt-get install binutils

 

#dex2jar(Dalbik VM byte code 2 class file)

cd /usr/local/src

sudo http://sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip

sudo unzip dex2jar-2.0.zip

cd dex2jar-2.0

chmod u+x ./*.sh

export PATH=$PATH:/usr/local/src/dex2jar

 

#jd-gui(java byte code 2  srccode)

sudo apt-get install libgtk2.0-0:i386

sudo apt-get install libxxf86vm1:i386

sudo apt-get install libsm6:i386

sudo apt-get install lib32stdc++6

sudo wget http://jd.benow.ca/jd-gui/downloads/jd-gui-0.3.5.linux.i686.tar.gz

tar zxvf http://jd.benow.ca/jd-gui/downloads/jd-gui-0.3.5.linux.i686.tar.gz

export PATH:$PATH:/usr/local/src/jd-gui

 

#その他

#日本語キーボード入力を可能に。

sudo dpkg-reconfigure keyboard-configuration

#史上最高のエディタをインストール

sudo apt-get install vim


ツールがインストールし終わったら早速解析開始!と行きたいところであるが、先ほど紹介した本では解析対象のファイルのダウンロードリンクが特別書かれているわけではない。

 

もう一冊下記の書籍も購入したが、

book.mynavi.jp

 

今手元にないのと、届いても問題数が少なそうなので、WEB上で解けそうな問題を探す。WriteUPというのが問題に対する解説という業界用語らしいので、WriteUP付きのWEB問題集がまとまっているサイトを探す。

 

「CTF binary writeup」で検索して36800件ヒットするので、問題には困らなさそう。

 

問題があってそれを解くためのツールがあって解説がある。これで準備完了。

(残り2999日)