TomoriNaoから同人誌を出してコミケで頒布した。

所属しているCTFチームのTomoriNaoから同人誌を出してコミケで頒布しました。僕はMetasploitから学ぶ複アーキ シェルコード入門という題で記事を書きました。 無事完売した模様。 \TomoriNao Vol.1完売/— Team TomoriNao (@TomoriNao_pro) 2017年8月11日 …

複アーキ環境をエイってしてくれるシェルスクリプト書いた

リバースエンジニアリングであったりシェルコード開発であったりで、複数のアーキテクチャのバイナリが動作する環境が必要になることがある。 その環境構築と使い勝手をいいかんじにしてくれるシェルスクリプトを書いた。qcow2イメージの取り回しをよくする…

gitの使ってないブランチをガッと消すコマンド書いた

バイトで開発するときブランチ切ってプルリクを送る感じで開発してて、ブランチ多いのが気になってたけど、ひとつひとつ消すのもだるいので書いた。 alias rmbr="git branch --merged | grep -v '*' | grep -v 'master' | xargs -I % git branch -d %" alias…

SHA2017 CTF round Teaser NoComment..Again writeup

CTF

問題文 There might be something hiddenq in this file, can you find it? .exeが与えられる。 解く 動かしてみると、PealApp Utilityのライセンスが評価版で期限が切れたという旨のメッセージが出る。 これはPCの時間をn日前にすることで回避できる。この…

SHA2017 CTF round Teaser Website Attack writeup

CTF

SHA2017 CTF round Teaser Website Attack (Network) のwriteup。ひさしぶりにCTFをやった。 問題文 Our website received an attack in 2013, we managed to capture the attack in this pcap. Can you find out if we leaked some sensitive information? …

GSoC 2017にmetasploitで採択された。

GSoCとは GSoCというのはGoogle Summer of Codeの略で、アメリカでは学校が休みである夏の3ヶ月(5/30〜8/22)の間、Googleからお金を貰ってOSSに貢献しようというイベントである。日本では一部の期間、学校がある期間とかぶり、一見むずかしいように見える…

RSpecで画像をアップロードするAPIのテストを書く

Rack::Test::Methodsに含まれるRack::Test::UploadedFile.newを使う。Gemfile.lockを見れば分かるようにrack-testはデフォルトでRailsアプリケーションにインストールされている。 以下、grapeで作成した画像をアップロードするAPIに対する正常系のテストの…

GOT、PLTとIAT

動的リンクされたライブラリのアドレス解決の際、ELFではGOT、PLTが、PEではIATがそれぞれ用いられる。たまにどっちがどっちでどうだったのか分からなくなるのでメモしておく。 GOTとPLT GOT(Global Offset Table)はシンボルへのポインタの配列で、 プログラ…

メソッドを関数に内包して関数のように扱うと便利

go

メソッドを関数に内包すると関数のように扱える。初期化済みのインスタンスや構造体を使うことで、構造体の初期化をしなくていいようにしている。これは特にライブラリを作るときに便利で、lib.func() という風にメソッドを呼ぶことができる。ライブラリが呼…

Pythonスクリプトに対してユニットテストするときのディレクトリ構成

フレームワークを使って開発しているとユニットテスト用にディレクトリが用意されていることもあるが、単体のPythonスクリプトに対してユニットテストを書くときはディレクトリ構成を考える必要がある。やはりユニットテストとそれ以外は違うディレクトリに…

近況

nao: No-meaning Assembly Omitter for IDA proを公開したところ、リポジトリめっちゃふぁぼられたり、unicornの作者にコメントされたり、unicornのshowcaseに載せてもらえたりして高まった。 ツイートされた! w0w, finally someone used Unicorn emulator …

Shuffler: Fast and Deployable Continuous Code Re-Randomization の紹介

はじめに 情報セキュリティ系論文紹介 Advent Calendar 2016 - Adventarの23日目の記事として、Shuffler: Fast and Deployable Continuous Code Re-Randomization | USENIXの紹介をやっていく。今日は12月23日であり、明日はクリスマス・イブである。 これは…

Railsを5.0にupdateした時のメモ

方法 Gemfileを編集する。Railsのversionを最新版に指定してbundle update。 gem 'rails', '5.0.0.1' # そのときの最新版を指定してくれ! Rails5に対応していないversionを指定されているgemがあったりするのでエラーメッセージに応じてversion指定を抜く必…

SSPのエラーメッセージからのinformation leak

SSPのエラーメッセージとは SSP(stack-smashing protection)とはスタック上にあるcanaryと呼ばれる値を配置し、それが書き換えられたか否かでstack overflowしたかどうかを判定するセキュリティ機構である。 stack overflowが起こるコードを実行してみる。 #…

デーモンの仕組み

デーモンはバックグラウンドで動き、terminalからインタラクティブに操作されることがないプロセスである。起動時に開始し、rootユーザやapache、postfixなどの特権ユーザにより動かされる。systemdで操作するcrondとかsshdとかのことである。 デーモンは一…

DMCAに調査目的でのリバースエンジニアリングが例外に追加されそう

DMCA updated – toaster penetration testing gets green light in America • The Registerによると、アメリカの法律であるDMCA(デジタルミレニアム著作権法)の例外に、調査目的でのリバースエンジニアリング等のセキュリティテストが2年以内に追加されるよ…

IDAにカラースキーマ(.clr)を適用する

メニューバーの Options から Colors を選択すると以下の画面が出てくる。 importボタンを押してファイルを選択すれば終わり。 おすすめカラースキーマはeugeii/ida-consonance: Consonance, a dark color scheme for IDA.。 完全にやり方を忘れていたので備…

CODE BLUE 2016とAV TOKYOに行った。

去年はカスペルスキー大先生の学生支援枠で参加していたCODE BLUEに学生スタッフとして参加した。今年のスタッフはスーツ着なくてよくなっていたり、スタッフ数が倍になっていたりで、去年のスタッフのみなさんに比べてかなり楽になっていた。相変わらず異常…

サイバーエージェントの長期インターンに行ってきた

8/16から9/21までサイバーエージェントの長期インターンに行っていたので感想を書く。 某インターン以外でも最高の夏は過ごせる!! 面接 インフラかサーバサイドやりたいけど、インフラは自信ないとか言ってたら、「OpenStackって知ってる?」って聞かれて「…

androidでpwnできる環境を作ってみる

ndk-buildにより作成したプログラムをandroid上で待ち受けさせる。arm環境でpwnするときに使える。 準備 プログラムを用意する ソース /* test.c */ # include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } ビルドスクリプト Application.mkを</stdio.h>…

社会...

給料日 給料日なのにまだ振り込まれてないのでこれはキテますよ— 友利たけまる (@tkmru) 2016年8月25日 なんか今日は口座確認しただけでつかれた— 友利たけまる (@tkmru) 2016年8月25日 最悪レベルで人権がなくて給料が振り込まれない(2度目)— 友利たけまる …

goのバイナリを簡単に読みたい

先日の goのバイナリをちょっとまじめに読んでみる、strippedなgoのバイナリを読み解くでは気合いでgoのバイナリを読んでいった。goのバイナリの解析の難しいところは、strippedだった場合に静的リンクされたライブラリの1000個以上の関数がどの関数なのか分…

gccでlibc抜きでコンパイルを通す

Hello from a libc-free world! (Part 1) (Ksplice Blog) がおもしろかったのでやっていく。 libcありのとき コード よくあるhello worldのコード $ cat hello_with_libc.c # include <stdio.h> int main() { printf("Hello World\n"); return 0; } コンパイル $ gcc </stdio.h>…

Unbreakable Enterprise Product Activationをz3pyを使って解いてみる

はじめに z3pyにkatagaitai勉強会#6 - 関西|easyで入門したので、練習がてらGoogle CTF 2016のUnbreakable Enterprise Product Activationを解いた。 この問題を人力で解くのは難しく、競技期間中は解けなかったが、z3pyを使えば楽に解くことができた。 実行…

IoTセキュリティハッキングコンテスト神戸で大洗女子学園は廃校になりました

IoTセキュリティハッキングコンテスト神戸2016 | Kobe Digital Labo 神戸デジタル・ラボ に大洗女子学園を代表して参加してきました。IoTセキュリティハッキングコンテストというのは、要はIoTに関係がある問題が出るCTFですね。 様子 高校の廃校を回避する…

strippedなgoのバイナリを読み解く

この前はふつーのgoのバイナリを読んだ。今回はstrippedなgoのバイナリを読んでいく。 環境 $ uname -a Linux ubuntu 3.19.0-58-generic #64~14.04.1-Ubuntu SMP Fri Mar 18 19:05:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modu…

医療セキュリティハッキングコンテスト神戸2016に行ってきた

医療セキュリティハッキングコンテストとは 実際に運用されている医療系ソフトウェアを合法的に叩き潰せて、賞金も出る最高のイベントです。学校の先輩達とチームで出場してました。医療セキュリティハッキングコンテスト神戸2016 | Kobe Digital Labo 神戸…

goのバイナリをちょっとまじめに読んでみる

goのバイナリをちょっとまじめに読んだのでメモ。 環境 $ uname -a Linux ubuntu 3.19.0-58-generic #64~14.04.1-Ubuntu SMP Fri Mar 18 19:05:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID:…

log2timelineの使い方

この記事は1年半前から下書きのままになっていたものである。 log2timelineとは タイムライン解析というファイルシステムのタイムスタンプ情報を元に、時系列順に痕跡を解析していく手法がある。 log2timelineはそのためのフレームワークである。plasoという…

Unicorn、usercornを使ってみる

Unicornとは この記事での Unicorn は、エミュレータの方であり、決してRackサーバの方ではない。 Unicornは軽量でマルチプラットフォーム、マルチアーキテクチャな CPU emulator frameworkである。UnicornはNguyen Anh Quynh氏が中心となって開発されている…

急にCSSがくずれた話

大分前に作ったchrome拡張のCSSがくずれていた。favurl - Chrome Web Store確認してみたらpreタグに対しての word-wrap: break-word; が効いていなかった。 html - How do I wrap text in a pre tag? - Stack Overflowによると、CSS3ではwhite-space: pre-wr…

セキュリティ・キャンプ・フォーラムで公開処刑されてきた

セキュリティ・キャンプ・フォーラムとは セキュリティ・キャンプの卒業生の同窓会的なイベントです。 「セキュリティ・キャンプフォーラム2016」開催のご案内:IPA 独立行政法人 情報処理推進機構 経緯 今年からセキュリティ・キャンプ・フォーラムにセキュ…

Rubyでparse.com経由でPush通知をする

parse.comとは MBaaS(Mobile Backend as a Service)の一種で、簡単にAndroidやIOSにPush通知できるサービス。https://www.parse.com/ RubyでPush通知を送る gem Rubyからはparse-ruby-clientというgemを使うことで楽に使える。しかし、ドキュメントが分かり…

pysandboxの話

Python Advent Calendar 2015の15日目担当の たけまる(@tkmru)です。 今日はSECCON 2015 九州大会で見かけたpysandboxの話をしようと思います。 pysandboxとは Pythonで作られたsandboxのひとつで、2010年から2013年まで開発が行われていましたが、設計上の…

slackが☀︎を読んで死んで落ちた話

slack 1.1.8 on Marvericksが☀︎を読んで死んだ。起動してchannelを読むとすぐに落ちてしまう。 slackを再インストールしても、アカウント情報やどのチャンネルを開いていたか等のデータを保持しつづけるので、直らない。~/Library/Containers/com.tinyspeck.…

CODE BLUEに行ってきた。

CODE BLUE 2015に行ってきた。 世界トップクラスの専門家による情報セキュリティ国際会議「CODE BLUE(コードブルー)」 ああいうカンファレンスは初めてで、スーツ率が意外と高くてビビってたけど、セキュキャンとか勉強会とかで知り合った人が結構いて助か…

CTF for ビギナーズ 2015 滋賀 と 奈良

CTF for ビギナーズ 2015 滋賀にはスタッフとして、CTF for ビギナーズ 2015 奈良ではやったことのないA&D形式のCTFをやるということで参加者として参加してきました。 奈良の帰りに同族のたけまる号に会った。 CTF for ビギナーズ 2015 奈良ではビキナーで…

setup.pyの操作まとめ

はじめに setup.pyはつくったモジュールの情報を書いておくファイル。 モジュールの名前やバージョン、作者、ライセンスなどなど。 たまにしか使わないし忘れるのでメモ。 操作いろいろ モジュールのインストール python setup.py install long_description…

Cuckoo Sandboxを構築した

Cuckoo Sandboxとは Cuckoo SandboxとはOSSのマルウェアの自動解析システムで動的解析に使うことができる。使用にあたっては以下の記事が参考になりそう。www.ffri.jp 構築 最初はOS X上に構築しようとしてたが、yaraのエラーなどが出て消耗したのでやめて、…

Trend Micro CTF Asia Pacific & Japan 2015 Writeup

CTF

今回は大和セキュリティのみなさんとわいわい参加してきた。atnd.org普段、1人か2人でCTFやってるので大人数でわいわい解くと楽しくてよかった。 オールナイトで参加すると、寝る人にはミーティングルームを1人1部屋使わせてもらえて最高だった。 会場を提供…

Pythonから外部コマンドを実行する

関数がいくつかあってややこしいのでメモ。 非推奨の方法 osモジュールや、commandsモジュールを使う方法は古いので非推奨となっている。 osモジュールを使う osモジュールのsystem()を使う。この関数は標準 C 関数のsystem() を使って実装されている。戻り…

CSAW CTF 2015 writeup

CTF

Trivia ググって調べたり、google先生が出してくれる候補を見れば答えが分かる。 Trivia 1 This family of malware has gained notoriety after anti-virus and threat intelligence companies claimed that it was being used by several Chinese military …

IDA freeのIDA View-Aのアドレスとasm命令、オペランドの表示が途中で切れるときの対処法

IDA

タイトルだけでは状況がよく分からない感じだが、とあるファイルを読み込んだら、IDA View-Aが以下の画像のようになってしまった。Graph viewのスクショしかとってなかったが、Text viewではアドレスとasm命令、オペランドの表示が途中で切れるようになって…

asmでスマートに文字列の長さを算出する

asm

文字列の長さを算出 以下のasmコード(x64)で、文字列の長さを取得することができる。 mov eax, 0x0 mov rcx, 0xffffffffffffffff repnz scas al, BYTE PTR es:[rdi] not rcx lea rcx, [rcx - 1] // dec rcxでも可x86がいい人は適宜読みかえて欲しい。 解説 r…

セキュリティ・キャンプ 全国大会 2015 行ってきた!!

8/11 から 8/15 までセキュリティ・キャンプ 全国大会 2015 に行ってました。 セキュリティ・キャンプとは 宿泊費、参加費無料でガチプロの講師の講義が受けれるとてもナイスなイベントです。主に解析トラックの講義を受けてきました。 セキュリティ・キャン…

Pythonの外部入力をunpickle化することによる脆弱性を用いたexploitを書いた

背景 @inaz2氏のツイートでこの脆弱性を知り、exploitを書くに至った。デストラクタ等が自動実行される。ちなみにPythonのpickleにも同様の脆弱性がある https://t.co/Xkw3KBE3Es / PHPのunserialize関数に外部由来の値を処理させると脆弱性の原因になる htt…

承認情報です

一時的にホットエントリ入りした!!VMの検知について - 脱力系日記承認だ!!ちなみにあの記事はセキュキャン応募用紙の設問10の解答の一部だったりします。

VMの検知について

マルウェアを解析する際にはVMで解析を行うことが多いので、VMを検知してアンチデバッキングするマルウェアが存在する。それらが用いる手法についてまとめた。 1. TSCを用いる TSC(IA32_TIME_STAMP_COUNTER_MSR: TSC_MSR)とは、CPUクロックごとに加算される6…

/dev/null さんと出会った

いい夢を見た。しゃべりかけても反応してくれない子がいて、悲しんでたら/dev/nullさんだったっていう夢を見た— babyたけまる (@tkmru) 2015, 6月 4

シンボルを削ることによるmain関数のアンチデバッキング

CTFでよく見かけるmain関数のシンボルを削ることによるmain関数のアンチデバッキングについて。 まず、以下のコードをgccでコンパイルして、main関数のシンボルを確かめる。 #include <stdio.h> int main() { printf("test\n"); } $ objdump -d a.out|grep main 00000</stdio.h>…