Log of the Security

The main topic of this blog is computer science such as Security, Operating System, and Other

docker始めてみた!

今更ながらdockerについて色々みんなやっていたので

僕も始めてみようかなと思ってこの記事を書こうと思いまし!

 

1.what is docker?

まず私はdockerについてほとんど知識がない状態です、

docker ってなに?って感じです。ただdockerを使えば環境構築などが楽にできる?てきなことを聞いたくらいの知識しかないです。

色々調べた結果.....

 

・dockerはlinuxの機能から成り立っている

・イメージを共有して様々な人が利用でき環境構築などが容易にできる。

・docker コマンドでコンテナをひとつひとつ管理する

i don't know that what is conntena.....

・dockerコマンドを簡略化するdockerfileなるものがある

・docker-composeをつかえばさまざまなコンテナを同一ホスト上で管理できる(ほんとかよ!)

 

2.仮想化の概要について

ホスト型仮想化

ホストOS上で動作する仮想ソフトウェアを利用してVMを管理する方式

 

ホストOS-仮想ソフトーゲストOS

 

これはvmware とかvirtualboxですね。

 

ハイパーバイザー型仮想化

ハードウェア上 のハイパーバイザーを利用してVMを管理する方式

ホストOSなしでハードを管理

 

ハイパーバイザーーゲストOS

 

コンテナ型仮想化

ホストOSでコンテナと呼ばれるVMににたような振る舞いをする仮想的な区画を利用して管理、コンテナはホストOSのカーネルを利用する。

通常1コンテナ1プロセスで管理、ウェブサーバー、DBサーバーなど

 

ホストOS-コンテナエンジン(docker)-コンテナーAPL

 

 

これだけ見れば凄そうな感じですよね!!僕もはじめて聞いたとき間まじで?ってなりまりました。

 

3,why is docker merit???

じゃdockerのメリットって何でしょうか?

調べてみると。。。。

 

VMのようにOSを起動するなどがないため、メモリやリソースの消費が格段に低いので処理が早く、起動が早い

 

4.dockerについて

・コンテナ管理ソフト

 

docker engine 

イメージの作成やコンテナの起動などを行う。

 

docker compose

複数のコンテナを管理するコンポーネント

 

docker machine

Linux環境用にDockerの実行環境をコマンドで自動生成するコンポーネント

 

 

 

 

 

 

MEEPWN CTF 2018

hello! よっちです。

今回はmeepwn2018についてです。

 

結果から言うと一問しか解けなかったですね〜

やっぱpwn分野は難しいっすね。。。

 

とりあえずwriteupについては

github.com

 

↑に書いています〜。一問しか解いてませんが.....w

 

それから最近、某会社でリバースエンジニアリングのバイト始めました!!

これでbinary解析の分野も極めていけたらと思います!!

 

ではでは〜〜

Basic knowledge About CPU(central Processing Unit)

hey guys! I'm yotti.

1.introduction

 todays topic is about CPU. probably, you know that CPU(Central Processing Unit) is the electronic circuitry within a computer. CPU is the heart to say in human and the most important in the Computer, i think.

 so first question, what is the most popular CPU just now? some people may is said about CPU such as intel core series, or ryzen of AMD. but it is say to some people resently. cpu hisotry is very very deeply.

f:id:yottiii:20181015141435j:plain

it is next genelation model to the intel.

f:id:yottiii:20181015141647p:plain

but this model is more cheeper than before .

 

2.Histry

In 1990 years from 2000 years , the performance of CPU is decided by clock frequency. AMD or Intel, which will reach 1Gh first? 

 

Recent report

hello, my name is yotti!!

I have attended the CISO program that is collaborating in Keio Univ and Carnege Mellon Univ.

this program is very interesting for me and some attening people.

because, we usually don't study that content such as company control , Security of bisiness , etc...

Student like us usually are learning main about technology story that is IDE, algorithm, network security et al .

In that story teacher is said that " To protect imformation in way such as FW, IDS etc.. is the most important from security point of view".

so I think so too. 

I have one question that "why japanese people weakness to security?" .

so japanese is said by some people such as foreigher , companys people.

I thought that computer system is maide by U.S,  so Computer is written by English.

and I thought that we japanese has less English skill such as speaking, writting, lisning, reading. 

of course,  some people is able to english about forse skill,  but it is only a part.

this is very dengerous. japan is losing in some field such as semiconductor , memory,  to chinese etc. I must have a sense of crisis. 

first, I thought that we japanese is able to presentation. 

 

althought saying , my english skill is no good...

so I regard that I want to improve my english skill that is reading, lisning, writting , speaking.

 

thank you for coming my home page!

if you are good, please let comment to me

 

  

アセンブリ言語 メモ2

1, x86におけるアセンブリ命令と記法

 

アセンブリ言語アセンブリ命令と呼ばれる命令の集合で記述されている。

アセンブリ命令はオペコードとオペランドの2つからできている。

オペコードは命令が操作の種類をしてする部分であり、オペランドはオペコードに夜操作の対象となる部分である。

 

x86 or x86-64には2つの記法が存在する。一つはintel記法、二つ目はat&t記法。

IDE or llydbgではデフォルトでintel記法で表現される。

 

example) movv命令でeaxレジスタに5を格納する

 

intel) mov eax, 5

at&t) mov $5, %eax

 

at&tはプレフィックスも異なる。また第二オペランドと第一オペランドintel記法と比べて逆である。

 

x86アセンブリではオペランドにメモリアドレスを指定して、そのアドレスに格納されている内容を参照することができる。

 

ebx registerに格納されたアドレスを参照し、そのアドレスに格納されている値をeaxレジスタに格納する

ebx 0x01001234 = 5

eax レジスタにも5が格納される。

mv eax, [ebx]

 

さらにメモリアドレスを参照する際に、そのメモリアドレスから変異(ディスプレースメント)を指定することもできる。

つまり、ebxレジスタに格納されているアドレスから+4の位置にあるアドレスのように、あるレジストリに格納されたアドレスを基準にして、一定分変化した位置を以下のように示すことができる

 

mov eax, [ebx+4]

 

変位に加えて、オフセットレジスタやスケーラを指定することができる。この場合ベースレジスタ+変位+オフセットレジスタ*スケーラの位置アドレスにアクセスすることになります

 

アセンブリ言語を扱うオペランドに対しても、サイズを明示しなくてないけない。

例えば32bit整数に対してmov命令を実行する場合、対応するサフィックスであるlをつけてmovlという命令を用いる。

 

サフィックス一覧

b:byte(8bit)

s;short(16bit)

w:word(16bit)

l:long(32bit)

q:qwad(64bit)

t:10byte(80bit 浮動小数)

 

 

基本的なアセンブリ命令

[データ転送命令]

mov命令はsrcオペランドの値をdestオペランドに移動します。しかし、移動した後もsrcオペランドの値が失われるわけではないので、コピーといった方がしっくりくるかもしません。

 

mov dest, src

 

lea命令はsrcオペランドのアドレスを計算して、そのアドレスをdestオペランドにロードする。アドレス計算に用いられる。青dレス計算とは

lea eax, [esp+0x40] のように変位などを含めたアドレス計算をすること。この場合、スタックポインタに指すアドレスから変位0x40を加えたアドレスがeaxに格納される。

 

lea dest, src

 

xchg命令はarg1オペランドとarg2オペランドの値を交換します

 

xchag dest1 , dest2

 

lodsbは[DS:ESI]のメモリの内容をBYTEすなわち1倍分ALレジスタに読み込む。読み込んだ後はESIレジスタを、DFレジスタに基づいて、読み込んだ分、加算または減算する。

 

push命令は、argオペランドの値をスタックにpushします。具体的にはESPレジスタの値をレジスタ幅分(32bitでは4byte, 64bitでは8byte)減算し、argオペランドをESPレジスタの示すスタックのトップに格納する。

pop命令はスタックからargオペランドへpopします。具体的にはESPレジスタの示すスタックのトップ値をargオペランドへ格納espレジスタの値をレジスタ幅分加算します。し、

 

pop dest

 

add命令はdestオペランドにsrcオペランドを加算した結果をdestオペランドに格納します。sub命令も同様に、destオペランドからsrcオペランドを減算した結果をでsトペランドに格納する。

 

add dest, src

sub dest, src

 

mul命令、srcオペランドにEAXレジスタの値を乗算し、結果の上位4byteをedxレジスタ、下位4byteをeaxレジスタに格納します。

 

cmp命令はsub命令と同じ減算をします。しかし、結果はオペランドに格納されずに破棄される。

アセンブリ言語 メモ その1

英語の勉強もかねて、ところどころ英語で書くかもです。

1.register and stack

アセンブリ言語を読み解く上で重要な概念 = レジスタ、スタック

アセンブリ言語 = 機械と一対一で対応。コンピューターがアセンブリ命令を解釈して実行できる形式

そのため、アセンブリ言語の命令群がどのような設計をしているか知ることはコンピューターの設計と密度に関わっている。

 

プロセッサーアーキテクチャにより、どのような命令が用意されているか変わっていくる。そのため、プロセッサーごとのアーキテクチャーの設計や、それぞれのデータ構造を理解してくてはいけない。

 

the most using processe architecture x86

 

what is register?

A register is memory device to exist within processer, and it operates faster than the memory or auxiliary strorage device. 

プロセッサーが命令を実行する時は、直接メモリを操作するのではなく、メモリからレジスタへ読み出したデータに対して操作することが多い。

 

the strage capacity is very small(many case 32bit or 64bit), 

the processer is called typically 32bit or 64bit CPU, but it is decided by the reegister width. the processer usually has multiple register within it , and use properly by usefulness.

 

the x86 architecuture have 6 general register and 3 special registe in the computer.

6 general register = EAX, ECX, EDX, EBX, ESI, EDI

3 special register = EBP, ESP, EIP

がある。 ESIとEDIはまとめてindex registerと呼ばれることがある。

f:id:yottiii:20180723150847p:plain

genelral register のうち EAX,ECX,EDX,EBXのの下位16びっとは、AX,CX,DX,BXと呼ばれ、さらにその上位8bitをAH,CH,DH,BH, 下位8bitをAL,CL,DL,BLと呼ばれている。h

 

how to  use each register?

EAX(accumulator register):演算の結果を格納

ECX(counter register):ループ回数などのカウントを格納

EDX(data register):演算に用いるデータを格納

EBX(base register):アドレスのベース値を格納

ESI(source index register):一部のデータ転送命令において、データ転送元を格納

EDI(destination index register): "データ転送先"

 

EBP(base pointer register):現在のスタックフレームにおける底のアドレスを保持

ESP(stack pointer register):現在のスタックトップのアドレスを保持

EIP(instraction pointer register):次に実行するアセンブリ命令のアドレスを保持

 

これらをベースポインター、スタックポインター、命令ポインターと呼ぶことがある。

 

flag registerは前の命令によって生じた状態このとや、プロセッサーの状態を格納する。

このレジスタの保持している値によって、動作の変わる命令などがある。

EFLAGSregisterと呼ばれる32bit registerで実装されており、17個のフラグが格納されている。

2.バイナリ解析のさい、利用する頻度があるフラグ

 

CF(carry flag):演算命令でキャリー(桁上がり)かボロー(桁借り)が発生した時にセットされる

ZF(zero flag):操作の結果が0になった時にセットされる。

SF(sign flag):操作の結果が負になった時にセットされる。

DF(destination flag):ストリームの方向を制御する。

OF(overflow flag):符号付き算術計算の計算の結果がレジスタの格納可能範囲を超えた場合にセットされる。

 

セグメントレジスタとは、セグメントのアドレスを参照するのに用いられるレジスタです。

what is segment?

メモリを管理するために、格納するデータの種類によって領域として区切ったもの、セグメントをメモリ管理に用いる方法をセグメント方式と言います。

 

CS(code segment registe):コードセグメントのアドレスを格納。

DS(data segment register):データセグメントのアドレスを格納

SS(stack segment register): スタック絵Sグメントのアドレスを格納

ES(extra segment register):エクストラセグメント (追加セグメント)のアドレスを格納する

FS(F segment register):2番目の追加セグメントのアドレスを格納

GS(G segment register):3番目の追加セグメントのアドレスを格納

 

x86-64レジスタは・・・x86を拡張したもの

 

stack

後入れ先出し、煽は先入れ後出しのデータ構造のこと、

コンピュータアーキテクチャの技術用語では、メモリ空間の一部で、先入れ後出しのデータ構造を持つ領域のこと。

 

コールスタック・・・関数呼び出しに用いられる。

マルチバイト・・・一文字を複数のバイトで表す体型

 

バイトオーダー・・・マルチバイトデータをメモリ上にどのように配置するかを表すもの。

主要なアーキテクチャーのアセンブリを読むためにはビッグエディアンとリトルエディアンのバイトオーダーを知っておく必要がある。

MSB、LSB

MSB...Most signification byte マルチバイトのデータの中で最上位のバイトを指す。

LSB...Least signfication byte マルチバイトのデータの中で最下位のバイトを指す。

 

example)byte:01020304

this is 4byte to strings.

MSB = 01 低位のアドレス番地

LSB = 04 高位のアドレス番地

リトルエディアンでは

MSB = 01 高位のアドレス番地

LSB = 04 低位のアドレス番地

 

つまりリトルエディアンでは

04030201という並びで格納される。

x86 or x64ではこのリトルエディアンが採用されている。

SecurityFastCTF2018のwriteupとか

おはようございます、こんにちは、こんばんは!

今日は, securityfastCTF2018に出たのでその時のwriteupを書いたり,感想を書きたいと思います。

 

まずwriteupに関しましては,githubの方に詳細を書いています。

github.com

github.co

 

感想ですが,やはり高得点の問題はレベルが高く低いポイントのflagしか取れませんでした^^;

順位は181/1023

181位でした。問題は2問しか解けませんでしたがとても面白い問題が多くとても勉強になりました。特にmicsの問題は,結構頭を使う問題が多かったです。

 

次はgoogleCTFに関して書きます。