SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
CTFで学ぼう!
リバースエンジニアリング
@junk_coken
自己紹介
● ジャンクさん(@junk_coken)
● どこかの留年しそうな専門学校生
● セキュリティのことを勉強中
● java女子部は昨年12月の部活からの超新参
● CTF初心者
● LT初です
リバースエンジニアリング、ご存知ですか?
リバースエンジニアリングとは
● 機械語である実行ファイル(.jarなど)から人間が
読めるソースコードを導き出すこと。
(一部の超人はバイナリ読んじゃう)
● マルウェア(ウイルス)の解析によく使われる手法
の一つ。
では、CTFはご存知ですか?
CTFとは
● Capture The Flagの略。
● セキュリティ技術を競うコンテスト。
● 有名なCTFでは日本では「SECCON」、 海外では
「DEFCON」などがある。
● CTFで問われる技術の中に、
リバースエンジニアリングが存在する!
リバースエンジニアリング問題を
解いてみよう!
SECCON2015 Online CTF binary100
Reverse-Engineering Android APK 1
問題文:じゃんけんに1000回連続で勝ち続けよ
rps.apk ← 実行ファイルが落ちてくる
(解答は SECCON{hogehoge} の形式)
リバースエンジニアリングは難しい?
リバースエンジニアリングは難しい?
ツールで簡単!!!!!
ざっくりリバースエンジニアリング
1. apkをzipとして解凍
2. 中のclasses.dexをdex2jarというツールでjarファイルに変換
3. 変換したjarをzipとして解凍
4. 中のclassファイルをjd-guiというツールで開く
参考:
http://qiita.com/kasaharu/items/900fc937be80d87090ce
http://d.hatena.ne.jp/ozuma/20130817/1376748772
_人人人人人人_>   完成   < ̄^Y^Y^Y^Y^Y ̄
読める!!
読めるぞ!!
if (1000 == MainActivity.this.cnt) {
localTextView.setText("SECCON{" + String.
valueOf((MainActivity.this.cnt + MainActivity.this.
calc()) * 107) + "}");
}
つまり・・・
解答:SECCON{ (1000+calc()の値) * 107 }
calc()とは何ぞや?
static
{
System.loadLibrary("calc");
}
public native int calc();
どうやらライブラリらしい・・・
libフォルダにlibcalc.soが存在
soファイルとは?
● Shared Objectという共有ライブラリ
● Linuxで扱われるELF形式の実行ファイル
● javaほどわかりやすい
リバースエンジニアリングはできない
逆アセンブルをすることになる
x86フォルダ内のlibcalc.soをobjdumpで逆アセンブル!
$ objdump -d libcalc.so
<Java_com_example_seccon2015_rock_1paper_1scissors_
MainActivity_calc>:
400: b8 07 00 00 00 mov $0x7,%eax
405: c3 ret
movは値をレジスタ(ここではeax)に格納する命令。
7をeaxに格納し、戻り値としてeaxを返している。
soファイルをリバースエンジニアリング!
x86フォルダ内のlibcalc.soをobjdumpで逆アセンブル!
$ objdump -d libcalc.so
<Java_com_example_seccon2015_rock_1paper_1scissors_
MainActivity_calc>:
400: b8 07 00 00 00 mov $0x7,%eax
405: c3 ret
movは値をレジスタ(ここではeax)に格納する命令。
7をeaxに格納し、戻り値としてeaxを返している。
soファイルをリバースエンジニアリング!
calc()は7を返すことがわかる!
それでは解答!
SECCON{(1000+7) * 107}
↓
SECCON{107749}
SECCON2015onlineCTF問題:https://github.
com/SECCON/SECCON2015_online_CTF
まとめ
● リバースエンジニアリングすることでflagのように隠された情報
がわかってしまう
(例えば、秘密鍵をそのままソースに埋めていたら・・・)
● 難読化を行うことでリバースエンジニアリングされにくくするこ
とはできるが大体時間稼ぎにしかならないと思われる。
● 機密情報はなるべくソースに入れないのが吉。
まとめ
ここで紹介した技術は絶対に悪用しないように
お願いします。
基本的にリバースエンジニアリングは著作者の許可
なく行うことは許されません。
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 

La actualidad más candente (20)

CTF初心者🔰
CTF初心者🔰CTF初心者🔰
CTF初心者🔰
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
Format string Attack
Format string AttackFormat string Attack
Format string Attack
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
Deflate
DeflateDeflate
Deflate
 

Destacado (6)

セキュリティ・キャンプアワード(2016)発表資料_ハニーポッターへの道
セキュリティ・キャンプアワード(2016)発表資料_ハニーポッターへの道セキュリティ・キャンプアワード(2016)発表資料_ハニーポッターへの道
セキュリティ・キャンプアワード(2016)発表資料_ハニーポッターへの道
 
セキュリティを学ぼう~Ctfを添えて~
セキュリティを学ぼう~Ctfを添えて~セキュリティを学ぼう~Ctfを添えて~
セキュリティを学ぼう~Ctfを添えて~
 
スコアサーバーに起きた脆弱性で学ぶWebセキュリティ
スコアサーバーに起きた脆弱性で学ぶWebセキュリティスコアサーバーに起きた脆弱性で学ぶWebセキュリティ
スコアサーバーに起きた脆弱性で学ぶWebセキュリティ
 
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
 
Beta
BetaBeta
Beta
 
Can We Prevent Use-after-free Attacks?
Can We Prevent Use-after-free Attacks?Can We Prevent Use-after-free Attacks?
Can We Prevent Use-after-free Attacks?
 

Similar a ctfで学ぼうリバースエンジニアリング

[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼 [CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
CODE BLUE
 
SECCON CTF セキュリティ競技会コンテスト開催について
SECCON CTF セキュリティ競技会コンテスト開催についてSECCON CTF セキュリティ競技会コンテスト開催について
SECCON CTF セキュリティ競技会コンテスト開催について
takesako
 
CTFというハッカーイベント+α
CTFというハッカーイベント+αCTFというハッカーイベント+α
CTFというハッカーイベント+α
Yuichi Nagayama
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる
fumoto kazuhiro
 

Similar a ctfで学ぼうリバースエンジニアリング (20)

Kosenconf sendai2
Kosenconf sendai2Kosenconf sendai2
Kosenconf sendai2
 
自作CTFについて考えてみる
自作CTFについて考えてみる自作CTFについて考えてみる
自作CTFについて考えてみる
 
CTFの布教
CTFの布教CTFの布教
CTFの布教
 
ret2libcとpopretで初等的BOF攻撃
ret2libcとpopretで初等的BOF攻撃ret2libcとpopretで初等的BOF攻撃
ret2libcとpopretで初等的BOF攻撃
 
さらば、Stagefright 脆弱性
さらば、Stagefright 脆弱性さらば、Stagefright 脆弱性
さらば、Stagefright 脆弱性
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
機械学習・ディープラーニング、ITの実装スキル学ぶ方法(と私の場合)
 
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
 
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
 
OSC Kyoto CTF Seminar
OSC Kyoto CTF SeminarOSC Kyoto CTF Seminar
OSC Kyoto CTF Seminar
 
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼 [CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
[CB19] アンチウイルスをオラクルとしたWindows Defenderに対する新しい攻撃手法 by 市川遼
 
SECCON CTF セキュリティ競技会コンテスト開催について
SECCON CTF セキュリティ競技会コンテスト開催についてSECCON CTF セキュリティ競技会コンテスト開催について
SECCON CTF セキュリティ競技会コンテスト開催について
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?CTF(Capture the Flag)って何?
CTF(Capture the Flag)って何?
 
CTFというハッカーイベント+α
CTFというハッカーイベント+αCTFというハッカーイベント+α
CTFというハッカーイベント+α
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる
 
私立プログラミングキャンプ
私立プログラミングキャンプ私立プログラミングキャンプ
私立プログラミングキャンプ
 
設計ビギナーが語るソフトウェア設計
設計ビギナーが語るソフトウェア設計設計ビギナーが語るソフトウェア設計
設計ビギナーが語るソフトウェア設計
 

Último

Último (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

ctfで学ぼうリバースエンジニアリング