サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
rkx1209.hatenablog.com
この記事はKobeUniv Advent Calendar 2015 - Adventar12/6の記事です。 本カレンダーではKobeUniversityの現役生または卒業生が自分のやっている事(技術系,理工系に限らず) について自由に書く物です。すごい身内ネタで終わってしまうと思っていましたが予想以上に たくさんの方に参加して頂けてとても嬉しいです。(結構geekな方いるんですねー) 私は普段主に低レイヤー(?)を触っている人間で、具体的にはシステムプログラム7割,セキュリティ3割 ぐらいの割合で活動しています。 で、今回は前者のシステムプログラムについて、デモプログラムを作成しゆるく紹介します。 こんな事ができるよーという簡単なデモを通して、システムプログラミングの面白さを感じて頂ければ幸いです。 (後者のセキュリティについては本カレンダーのもうひとつ記事でまあまあ真面目に書く予定で
A History of system-level offensive security researches: How is your system compromised by nation state hacking, APT attack はじめに 企業や個人に対するサイバー攻撃の頻度は年々増加の一途を辿っているが、これらはskiddyによる悪戯程度の物から、企業を標的とした高度な標的型攻撃、あるいは政府による諜報活動に至るまで多岐にわたっている。 特に大規模な組織や政府による綿密に練られたサイバー攻撃は、確実に目的を果たすために高度な手段が講じられる事が多い。 本記事では高度標的型攻撃や政府による諜報活動で用いられる手法の一つとして、"システムソフトウェアに対する攻撃"について紹介する。 これはオペレーティングシステム (OS) や仮想マシン、ファームウェアといった基盤システムを
0. はじめに 久しぶりのブログ記事投稿で、いきなりポエムを書きます。技術的な記事じゃないです。 今回は学部や修士の学生が、アメリカの大学院へ進学、ないし一定期間滞在させてもらう方法の一つを実際に私の体験を元に書きます。 以前こういうツイートをしたら、 10月から1年間、客員研究員としてカーネギーメロン大学(CMU)のCyLabで働く事になりました。 多分ほぼ確定— るくす (@RKX1209) 2018年1月23日 どういう経緯で行くことになったのか、書類等はどうしたのか等の質問が来たので、せっかくなので記事としてまとめてしまいます。 海外進出を視野に入れている学生の皆さんの参考になれば幸いです。 私は現在大学院修士1年生で特にOSや仮想マシンモニター、ファームウェアといったシステムソフトウェアをターゲットとした攻撃やその対策技術を研究しています。 また今年の10月から1年ほどこちらの大
この記事は Kobe University Advent Calendar 2017 - Adventar 17日目の記事です。 1年ぐらい前にC3というSMTソルバをC言語でスクラッチから作ったので、その話でもします。 よりによってなぜSMTソルバをCで書いたかというと、若気の至りでハイパーバイザに組み込んだりして遊んでたからです。 ゲストシステムの検証をランタイムにしてくれる超軽量なハイパーバイザあったらカッコイイじゃないですか。 という割と適当な理由で作ったんですが、労力に対する成果があまりにも見合わなさすぎて、今はアプローチを変えています。 そういうわけで過去の遺物から生まれたC言語製SMTソルバC3なのですが、このままお蔵入りさせるのも何なのでコードの解説とかSMTソルバがどうやって動いてるのかみたいな話をしてみます。 あ あと、私は一介の情報系学生で論理学徒ではないので、ところ
0. はじめに カーネルエクスプロイト入門記事part2です。 前回part1では、環境構築とLinuxカーネルのメモリ管理の基礎について、実際のエクスプロイトでのユースケースを通して説明しました。 rkx1209.hatenablog.com さて、part2では実際にLinuxカーネルエクスプロイトを書いて行きます。 とはいえ既存の脆弱性を利用するエクスプロイトを記述するのはあまりよろしくないので、今回は学習用に脆弱なドライバを用意し、エクスプロイトを書いていきます。 まあ基本的なロジックは実際の脆弱性のそれと同じなので、意義はあるはずです。 学習用ドライバとエクスプロイトコードは以下のレポジトリに置いてありますので、各節ごとに逐次参照 してください。 github.com 1. 特権モードでの権限昇格 脆弱性を悪用して権限昇格を行うにはいくつか常套手段があり、中でも典型的な物がスタッ
0. はじめに 本記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基本的にカーネルはシステム内で最高権限を持つ特権モードで動作しているので、ここを悪用されるとシステムの大部分(ほぼ全て)を掌握されてしまいます。 エクスプロイトと言うと、普通はユーザー空間で動作しているアプリケーションのバグをつく物が多いですが、これだと限られたレベルの権限しか奪えません。 SELinuxやjailを始めとする、OSレベルでの保護機構に阻まれるとたちまち効力を失ったりします。 しかし、カーネル自体の脆弱性をつくカーネルエクスプロイトを利用すると最高権限での任意コード実行が可能なため、大抵の保護機構はものともしません。 このカーネルエクスプロイトが特に効力を発揮
本記事では、Linuxカーネルの鍵保存サービスの脆弱性(CVE-2016-0728)、およびそれを利用した権限昇格エクスプロイトについて解説します。 Linuxカーネルの参照カウンタオーバーフローはCVE-2016-0728とCVE-2014-2851が有名ですが、今回は前者を題材に扱います。 参考: Exploiting COF Vulnerabilities in the Linux kernel https://ruxcon.org.au/assets/2016/slides/ruxcon2016-Vitaly.pdf 0. セキュリティキャンプ2017応募課題 セキュリティキャンプというIPAが主催しているイベントがあるのですが、私がそこの応募課題の一つ(A-5)としてこの脆弱性を出題していたので、 Write upを兼ねて、今更ですがCVE-2016-0728について説明しようと
この記事は Kobe University Advent Calendar25日目の記事です。 低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendarのネタが作れなかったわけでは(ry なぜこんな記事を書いたか いわゆるシステムプログラミングのような低レイヤー(と言って差し支えない)ジャンルって一体何から始めれば良いのかいまいちピンと来ないし、何が面白いのかも分からないと思われている事が多いと思います。 にもかかわらず低レイヤーの魅力や学び方の指針みたいな物を示した、いわゆる入門記事ってかなり少ないんですよね。 本記事はこれからシステムプログラミングを始めたい方や、既にかじってみたが中々先が見えてこない、将来何の役に立つのか不安という方達に読んでい
1. qiraとは qiraとは世界的なハッカー、George Hotz氏 (ジョージ・ホッツ - Wikipedia) によって開発された高機能バイナリトレーサーであり、qiraという名は(QEMU Interactive Runtime Analyser)の略である。 GitHub - BinaryAnalysisPlatform/qira: QEMU Interactive Runtime Analyser 略語を見れば分かるがuser mode QEMUを使用したバイナリ解析ツールであり、ELFなどの実行形式バイナリを実際に動作させて各命令のレジスタ、メモリへの操作を逐次記録する。 これらの記録はweb UIを通して好きな命令位置にカーソルを移動させるだけで見ることができ、その時のレジスタ、メモリの記録が再現される仕組みになっている。ソフトウェアのデバッグやCTFにおけるバイナリ解
この記事は CTF Advent Calendar 20日目になる予定だった記事です。 大遅刻すみません。 少し前に34c3 CTFの過去問を解いたのでそれのwrite upでも。 いや数日前にあった35c3 CTFじゃねーのかよと突っ込まれそうですが...12/20に去年の過去問を終わらせて気持ちよく35c3に出るつもりが、 OMG... My laptop has just broken!! What the hell... Tomorrow is 35c3 ctf 😱— るくす (@RKX1209) December 27, 2018 研究でわけのわからない命令を発行しすぎてなぜかメモリバスエラーが頻出するようになりラップトップ崩壊、泣く泣く新しい物を購入して今に至ります。 タイミングが悪すぎる。 というわけで過去問解いたログだけでも供養しておきます。元々1,2問程度解くだけのつも
なんとなくスクリプト言語を作ってみたくなったので、東方のような弾幕ゲーで敵の行動,弾幕パターンを記述するためのスクリプト言語を作ってみました。 (最近のゲーム業界ではわざわざDSLを作るより、LuaやHaxeのような汎用的なスクリプト言語と組み合わせるのが普通みたいですが) 近年コンパイラ基盤の普及で、比較的コンパイラ開発の敷居は下がってると思いますが、せっかくなので今回はLLVMなどのコンパイラ基盤を使わず、フロントエンドから バックエンド,インタプリタまで全て自力でフルスクラッチ開発してみました。 またパーサージェネレーターなども一切使っていません。 github.com フロントエンド 文法はLL(k)のような固定長ではなく任意長先読みで、パックラット構文解析器を実装しました。例えば敵の弾幕スクリプトは以下のように書きます。 let count=0; let cx=GetCenter
VMMの高速化について学ぶ過程でKVMのコードを読んだので、 メモ代わりに内部構造の解説記事を書きました。 KVMはqemuと連携して動作するため、以前私が書いたQEMU internals( http://rkx1209.hatenablog.com/entry/2015/11/15/214404 ) も合わせてご参照ください。また本記事はある程度システムプログラムに慣れており、 VT-xや仮想化の基本アーキテクチャは知っている物として進めます。 1.qemu-kvm,kvmの初期化 では早速見て行きましょう。まずはKVMの初期化の入り口となるqemu-kvmサイドから見ていきます。(ちなみに現在qemu-kvmはqemu本家に統合されておりconfigを変えることでkvmを有効化する仕様になっています) qemuは/dev/kvmを通してKVMとやり取りを行います。全体的なアーキテクチ
この記事は システム系論文紹介 Advent Calendar 2015 - Adventar 17日目の記事です。 USENIX'14 ATCにてintelのKun Tian, Yaozu Dong,David Cowperthwaiteによって発表され、XenGTやKVMGTとしてごく最近に実装された新しいたGPU仮想化方式、GVT-gについて見ていく。 A Full GPU Virtualization Solution with Mediated Pass-Through https://www.usenix.org/conference/atc14/technical-sessions/presentation/tian 昨今サーバー,クライアントサイド共にネィティブな速度のGPU仮想化が求められており、GPUに特化したインスタンスやGPUリソースをサービスとしたクラウド業者もい
前回(part1)rkx1209.hatenablog.com の続きです。 part2では仮想IRQ,チップセット,仮想IO,TCGを見ていきます。 多分part2で終わりです。(時間があればまたいつかpart3とか書いてみたいですね...) ではまず仮想IRQから見ていきます。 6.仮想IRQ QEMUにおいてIRQはIRQState構造体で表されます。 (hw/core/irq.c) struct IRQState { Object parent_obj; qemu_irq_handler handler; void *opaque; int n; }; nがIRQ番号でhandlerがIRQ#nに対応するハンドラです。またIRQStateは(include/hw/irq.h)でqemu_irqにtypedefされているため以降はqemu_irqと呼びます。 では前回見ていたマシン初
ここ一ヶ月ほどQEMUのコードとお戯れしていたのですが、 qemuのソースコードもうすぐ読みきりそうなのでどこかにまとめたいんだけど、qemu internalみたいな記事ってどれぐらい需要あるの— 前代未聞 (@RKX1209) 2015, 11月 9 と言ってみた所なんとなく需要がありそうだったので書きました。 本記事ではQEMUの内部実装を追い、具体的な仕組みを見ていきます。もし研究や仕事などでqemuを読む必要がある方や、これから趣味で読んでみようという方はぜひ参考にしてください。 (QEMU internalsというよりはQEMUコードリーディングの方が適切かもしれませんね....) さてここで扱うQEMUはqemu2.4.0でゲストはx86,ホストはx64であると仮定します。 両方共x86系となるとDBTの意味はあまり無く、KVM使ってどうぞという話になるのですが、あくまでコー
競技やったりセキュリティ勉強したりといろいろな分野に手を出しすぎている感は否めませんが、とりあえず今回はセキュリティのことについて書きます。 脆弱性としてもっとも基本的なものとして「バッファオーバーフロー」が挙げられます。自分の書いたプログラムでちょっと実験してみます #include<stdio.h> #include<stdlib.h> #include<string.h> int check(char *pass){ int accept=0; char pass_buffer[16]; strcpy(pass_buffer,pass); if(strcmp(pass_buffer,"RKX1209")==0) accept=1; return accept; } int main(int argc,char *argv[]){ if(argc<2){ printf("使用方法:%s
この記事は 自作OS Advent Calendar 2014 - Adventar 12/25の記事です。 一ヶ月程前からLinuxカーネルのコードを読み始めたので、解読ついでに自分でもカーネルを作ってみました。 とはいっても、まだ半分も完成してないです() 当初は、30日でできる 自作Linuxクローン開発 を予定していたのですが、 予想以上の規模で、解読とフルスクラッチ開発を併行するのは結構大変でした... という訳で、現在実装できている所まで紹介します。 開発レポジトリはこちらです。 RKX1209/Abyon · GitHub (インストール方法や実行方法はここに書いてます) 実装した機能 プロセススケジューラー Runキュー ハードウェア割り込み(PIC 8259A) 遅延割り込み Tasklet グローバルタイマー(PIT) タイマーリスト 仮想ページング(IA-32 MMU
8/12~8/16に行われたセキュリティキャンプ2014に参加しました。 クラスはソフトウェアセキュリティクラスです。以下参加記。 [1日目] 何とかして会場に着く。みんな結構早くついていて、すでにたくさん人がいた。 とりあえずいろんな人と名刺交換をする。首からDEFCONのアレぶら下げてる人とかいて怖かった。 でもみんなすごく良い人! 始めの特別講義はセキュリティ基礎。 脆弱性調査でどこまでやって良いのかとか、適切な報告の仕方とかの話だった。 その後はソフトイーサの人の講義。 想像以上にブッ飛んだ内容で大爆笑したw サイバーの世界に止まらない所が 印象的。(アヒルボートってこの人だったのか) 最後の特別講義は警察学校の人による講義。 すごかった(小並感) 何で警察学校にいるんだろうと何度も思った。警察にもとんでもない人がいるんだなぁと... グループワークも少しあった。グループの人みんな
このページを最初にブックマークしてみませんか?
『高機能バイナリトレーサqiraはどのように実装されているのか』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く