Wine2.0-rc5をソースコードからビルドする
Windows10を使っていたPCでブルースクリーンが頻発するようになったので、Windows10をアンインストールしてUbuntuをインストールした。
やっぱりWindowsのソフトを動かしたくなったので、Wineをインストールすることにした。最新版をインストールしてみる。
環境
- Ubuntu 16.04(64bit)
Wineとは・・・
https://ja.wikipedia.org/wiki/Wine
Wine (ワイン)は、オープンソースの Windows API 実装を通じて、主としてx86アーキテクチャ上のUnix系オペレーティングシステム (OS) においてWindows用アプリケーションをネイティブ動作させることを目標とするプログラム群である。
Wineのインストール
今回はホームページにある開発版の最新版であるWine 2.0-rc5
をインストールしてみる。
ソースコードをダウンロードして解凍
$ wget http://dl.winehq.org/wine/source/2.0/wine-2.0-rc5.tar.bz2 $ tar -jxvf wine-2.0-rc5.tar.bz2 $ cd wine-2.0-rc5/
64bit版のWineをビルドする場合
$ sudo add-apt-repository ppa:ubuntu-wine/ppa
ソースコードのレポジトリを追加
$ sudo vi /etc/apt/sources.list.d/ubuntu-wine-ubuntu-ppa-xenial.list deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial main deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial main ↑コメントアウトを外す
もし見つけられなければ、システム設定→ソフトウェアとアップデート→他のソフトウェア
で
http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial main (ソースコード)
のところにチェックを入れる
依存パッケージをインストールする
$ sudo apt update $ sudo apt build-dep wine1.8
configure
してみる
$ ./configure --enable-win64
configure
で次のようなメッセージが出たら下のコマンドを実行すると回避できる
configure: libhal 64-bit development files not found, no legacy dynamic device support.
$ wget http://launchpadlibrarian.net/99811656/libhal1_0.5.14-8_amd64.deb $ sudo dpkg -i libhal1_0.5.14-8_amd64.deb $ wget http://launchpadlibrarian.net/99811659/libhal-dev_0.5.14-8_amd64.deb $ sudo dpkg -i libhal-dev_0.5.14-8_amd64.deb
configure: gstreamer-1.0 base plugins 64-bit development files not found, gstreamer support disabled
$ sudo apt install libgstreamer-plugins-base1.0-dev
configure: libudev 64-bit development files not found, plug and play won't be supported.
$ sudo apt install libudev-dev
もう一度configure
してみて次のように出たら成功
$ ./configure --enable-win64 configure: Finished. Do 'make' to compile Wine.
次にビルドする
$ make $ sudo make install
この時make
にmake -j2
などと引数を与えると与えたスレッド数で並列化してくれる
64bit版のWineをビルドしたら、実行コマンド名がwine64
となる。
このままだと不具合があるので、wine
という名前でシンボリックリンクを作成しとく
$ sudo ln -s /usr/local/bin/wine64 /usr/local/bin/wine
Winetricksの導入
各種ライブラリやフォントなどの導入を簡単にしてくれるWinetricks
をインストールする
https://github.com/Winetricks/winetricks/releasesから最新版をダウンロードする
$ sudo apt install cabextract $ wget https://github.com/Winetricks/winetricks/archive/20170101.tar.gz $ tar xzvf 20170101.tar.gz $ cd winetricks-20170101 $ sudo make install
Wine-Monoの導入
.NET Framework
環境を提供するwine-mono
をインストールする
http://dl.winehq.org/wine/wine-mono/から最新版をダウンロードする
$ wget http://dl.winehq.org/wine/wine-mono/4.6.4/wine-mono-4.6.4.msi $ sudo mkdir /usr/local/share/wine/mono $ sudo mv wine-mono-4.6.4.msi /usr/local/share/wine/mono/
Wine-Geckoの導入
Internet Explorer
の環境を提供するwine-gecko
をインストールする
http://dl.winehq.org/wine/wine-gecko/から最新版をダウンロードする
$ wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi $ sudo mkdir /usr/local/share/wine/gecko $ sudo mv wine_gecko-2.47-x86_64.msi /usr/local/share/wine/gecko/
Wine初期設定
$ echo 'export WINEARCH=win32 winecfg' >> ~/.bashrc $ echo 'export WINEPREFIX="/home/USER/.wine/"' >> ~/.bashrc $ winecfg
USER
は各自のユーザーネームを入れて実行する
多分、文字化けしてるが後でフォントを入れるのでいい
文字化けするのを治す
フォントをインストールすることで文字化けが治る
$ winetricks allfonts
Wineの設定
$ winecfg
Windows
のバージョンをWindows7
に変更する
確認
上記のことができたかを確認する
$ wine uninstaller
このように文字化けがなくなっていてwine-mono
とwine-gecko
の最新版がインストールされてることが確認できたらここまで成功
使い方・実行方法
普通に
$ wine hoge.exe
$ chmod +x hoge.exe $ ./hoge.exe
ともできる
msi
の場合は、
$ msiexec /i setup.msi
で実行できる
エラーが出た場合
コマンドラインから実行したら、
例えば、
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\Microchip\\MPLAB IDE\\KEELOQ\\KeeLoqAlg.dll") not found
のように
err:module:import_dll Library [足りないライブラリ] (which is needed by L"[必要としてるDLL]") not found
という感じにエラーがでるので[足りないライブラリ]
をWinetricks
でインストールしてやる
$ winetricks [足りないライブラリの名前]
今回は、
$ winetricks mfc42
ダイアログではJa
を選択する(ドイツ語で「はい」らしい・・・)
.NET Framework をインストールしてみる
.NET
には前のバージョンに依存するのがほとんど(.NET4.0
は単独でインストールできる)だけど、
.NET Frameworkのインストールでエラーが出ないために
をやっていればWinetricks
が自動で必要なバージョンの.NET
をインストールしてくれる
Winetricks
最高!
.NET4.5
のインストール
$ winetricks dotnet45
〜32bit版のWineをビルドする場合〜
64bitのUbuntu
に32bit版のWineをビルドしようとしたが、うまく行かなかった・・・
32bitのライブラリをインストールするので32bitのリポジトリを追加する。
$ sudo dpkg --add-architecture i386 $ sudo apt update
configure
してみる
$ ./configure
configure
で次のようなメッセージが出たら下のコマンドを実行すると回避できる
configure: error: Cannot build a 32-bit program, you need to install 32-bit development libraries.
$ sudo apt install g++-multilib
configure: error: no suitable flex found. Please install the 'flex' package.
$ sudo apt install flex
configure: error: no suitable bison found. Please install the 'bison' package.
$ sudo apt install bison
configure: error: X 32-bit development files not found. Wine will be built without X support, which probably isn't what you want. You will need to install 32-bit development packages of Xlib/Xfree86 at the very least. Use the --without-x option if you really want this.
$ sudo apt install libx11-dev:i386
configure: error: FreeType 32-bit development files not found. Fonts will not be built.
$ sudo apt install libfreetype6-dev:i386
configure: libxcursor 32-bit development files not found, the Xcursor extension won't be supported.
$ sudo apt install libxcursor-dev:i386
configure: libxi 32-bit development files not found, the Xinput extension won't be supported.
$ sudo apt install libxi-dev:i386
configure: libXxf86vm 32-bit development files not found, XFree86 Vidmode won't be supported.
$ sudo apt install libxxf86vm-dev:i386
configure: libxrandr 32-bit development files not found, XRandr won't be supported.
$ sudo apt install libxrandr-dev:i386
configure: libxinerama 32-bit development files not found, multi-monitor setups won't be supported.
$ sudo apt install libxinerama-dev:i386
configure: libxcomposite 32-bit development files not found, Xcomposite won't be supported.
$ sudo apt install libxcomposite-dev:i386
configure: libGLU 32-bit development files not found, GLU won't be supported.
$ sudo apt install libglu1-mesa-dev:i386
configure: libOSMesa 32-bit development files not found (or too old), OpenGL rendering in bitmaps won't be supported.
$ sudo apt install libosmesa6-dev:i386
configure: OpenCL 32-bit development files not found, OpenCL won't be supported.
$ sudo apt install ocl-icd-opencl-dev:i386
configure: pcap 32-bit development files not found, wpcap won't be supported.
$ sudo apt install libpcap0.8-dev:i386
configure: lib(n)curses 32-bit development files not found, curses won't be supported.
$ sudo apt install libncurses5-dev:i386
configure: libsane 32-bit development files not found, scanners won't be supported.
$ sudo apt install libsane-dev:i386
configure: libv4l 32-bit development files not found.
$ sudo apt install libv4l-dev:i386
configure: libgphoto2 32-bit development files not found, digital cameras won't be supported.
$ sudo apt install libgphoto2-dev:i386
configure: liblcms2 32-bit development files not found, Color Management won't be supported.
$ sudo apt install liblcms2-dev:i386
configure: OSS sound system found but too old (OSSv4 needed), OSS won't be supported.
$ sudo apt install oss4-dev
configure: libudev 32-bit development files not found, plug and play won't be supported.
$ sudo apt install libudev-dev:i386
configure: libcapi20 32-bit development files not found, ISDN won't be supported.
$ sudo apt install libcapi20-dev:i386
configure: libcups 32-bit development files not found, CUPS won't be supported.
$ sudo apt install libcups2-dev:i386
configure: fontconfig 32-bit development files not found, fontconfig won't be supported.
$ sudo apt install libfontconfig1-dev:i386
configure: libgsm 32-bit development files not found, gsm 06.10 codec won't be supported.
$ sudo apt install libgsm1-dev:i386
configure: libtiff 32-bit development files not found, TIFF won't be supported.
$ sudo apt install libtiff5-dev:i386
configure: libmpg123 32-bit development files not found (or too old), mp3 codec won't be supported.
$ sudo apt install libmpg123-dev:i386
configure: libopenal 32-bit development files not found (or too old), OpenAL won't be supported
$ sudo apt install libopenal-dev:i386
configure: libldap (OpenLDAP) 32-bit development files not found, LDAP won't be supported.
$ sudo apt install libldap2-dev:i386
configure: WARNING: libxml2 32-bit development files not found (or too old), XML won't be supported.
$ sudo apt install libxml2-dev:i386
configure: WARNING: libxslt 32-bit development files not found, xslt won't be supported.
$ sudo apt install libxslt1-dev:i386
configure: WARNING: libgnutls 32-bit development files not found, no schannel support.
$ sudo apt install libgnutls28-dev:i386
ここまでのメッセージは消せたのだが、以下のメッセージは消えなかった・・・
configure: libpulse 32-bit development files not found or too old, Pulse won't be supported.
configure: gstreamer-1.0 base plugins 32-bit development files not found, gstreamer support disabled
configure: libdbus 32-bit development files not found, no dynamic device support.
誰か教えてください・・・
$ ./configure $ make $ sudo make install $ wine --version wine-2.0-rc5
SECON 2016 Online CTF-Write Up-
SECCONとは・・・http://2016.seccon.jp/about/
情報セキュリティをテーマに多様な競技を開催する情報セキュリティコンテストイベントです。
SECCONオンライン予選「SECCON 2016 Online CTF」に参加してきました
この記事は「CTF Advent Calendar 2016」の13日目の記事です
今回はあまり解けていないのでそのあたりは・・・
今回は解いている人が多いこの3問しか解けませんでした・・・
BiPhone(@Akashi_SN,@Snow_Poijio,@yamasy1549)で出場し、
300点で420位でした・・・精進します
Write Up
競技時間中に解けた問題のWrite Upを書いていきます。
Vigenere[Crypto-100pt]
Question
k: ???????????? p: SECCON{???????????????????????????????????} c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe |ABCDEFGHIJKLMNOPQRSTUVWXYZ{} -+---------------------------- A|ABCDEFGHIJKLMNOPQRSTUVWXYZ{} B|BCDEFGHIJKLMNOPQRSTUVWXYZ{}A C|CDEFGHIJKLMNOPQRSTUVWXYZ{}AB D|DEFGHIJKLMNOPQRSTUVWXYZ{}ABC E|EFGHIJKLMNOPQRSTUVWXYZ{}ABCD F|FGHIJKLMNOPQRSTUVWXYZ{}ABCDE G|GHIJKLMNOPQRSTUVWXYZ{}ABCDEF H|HIJKLMNOPQRSTUVWXYZ{}ABCDEFG I|IJKLMNOPQRSTUVWXYZ{}ABCDEFGH J|JKLMNOPQRSTUVWXYZ{}ABCDEFGHI K|KLMNOPQRSTUVWXYZ{}ABCDEFGHIJ L|LMNOPQRSTUVWXYZ{}ABCDEFGHIJK M|MNOPQRSTUVWXYZ{}ABCDEFGHIJKL N|NOPQRSTUVWXYZ{}ABCDEFGHIJKLM O|OPQRSTUVWXYZ{}ABCDEFGHIJKLMN P|PQRSTUVWXYZ{}ABCDEFGHIJKLMNO Q|QRSTUVWXYZ{}ABCDEFGHIJKLMNOP R|RSTUVWXYZ{}ABCDEFGHIJKLMNOPQ S|STUVWXYZ{}ABCDEFGHIJKLMNOPQR T|TUVWXYZ{}ABCDEFGHIJKLMNOPQRS U|UVWXYZ{}ABCDEFGHIJKLMNOPQRST V|VWXYZ{}ABCDEFGHIJKLMNOPQRSTU W|WXYZ{}ABCDEFGHIJKLMNOPQRSTUV X|XYZ{}ABCDEFGHIJKLMNOPQRSTUVW Y|YZ{}ABCDEFGHIJKLMNOPQRSTUVWX Z|Z{}ABCDEFGHIJKLMNOPQRSTUVWXY {|{}ABCDEFGHIJKLMNOPQRSTUVWXYZ }|}ABCDEFGHIJKLMNOPQRSTUVWXYZ{ Vigenere cipher
https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
Answer
問題文とヒントのリンクからわかるようにこれはVigenere暗号
だな~とわかる
http://elliptic-shiho.hatenablog.com/entry/2015/11/12/041637
ここのサイトを参考にした
鍵の前7文字はわかるのであとの5文字つまりlog(28^5)=7.15
と全探索できそうなので鍵を全探索するコードを書く
#!/usr/bin/env python3 import hashlib Base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}' key = "" Cipher = "LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ" KnownPlain = "SECCON{" Plain = "" Md5_Plain = "f528a6ab914c1ecf856a1d93103948fe" for i in range(len(KnownPlain)): Index_Of_KnownPlain = Base.find(KnownPlain[i]) Index_Of_Cipher = Base.find(Cipher[i]) Index_Of_key = Index_Of_KnownPlain - Index_Of_Cipher key += Base [-Index_Of_key] print("key:{}".format(key)) Allkey = [x+y+z+a+b for x in Base for y in Base for z in Base for a in Base for b in Base] j = 0 for k in Allkey: Plain = "" for i in range(len(Cipher)): Index_Of_Cipher = Base.find(Cipher[i]) genKey = key+k Index_Of_Key = Base.find(genKey[i%12]) Index_Of_Plain = Index_Of_Cipher - Index_Of_Key Plain += Base[Index_Of_Plain] j+=1 if j%10000000 == 0: print("{} Times".format(j)) if hashlib.md5(Plain.encode('utf8')).hexdigest() == Md5_Plain: print("Find!!!! ...{} Times".format(j)) print(Plain) break
$ python q1.py key:VIGENER 10000000 Times 20000000 Times 30000000 Times 40000000 Times 50000000 Times 60000000 Times 70000000 Times 80000000 Times 90000000 Times 100000000 Times Find!!!! ...108084499 Times SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}
1分ぐらいでフラグが出てくる
VoIP[Forensics-100pt]
Question
VoIP Extract a voice. The flag format is SECCON{[A-Z0-9]}.
Answer
Ip電話のパケットのようなので、Wiresharkの電話(y)→VoIP通話(V)→ストリーム再生
で音声を聞ける。
V
の発音がわからず苦労した
FLAG:SECCON{9001IVR}
Memory Analysis[Forensics-100pt]
Question
Find the website that the fake svchost is accessing. You can get the flag if you access the website!! The challenge files are huge, please download it first. Hint1: http://www.volatilityfoundation.org/ Hint2: Check the hosts file password: fjliejflsjiejlsiejee33cnc
Answer
http://www.volatilityfoundation.org/のメモリダンプの解析ソフトを使ってやる
https://github.com/volatilityfoundation/volatility/wiki/Volatility-Usage ドキュメント
volatility-2.5.standalone.exe -f forensic_100.raw imageinfo Volatility Foundation Volatility Framework 2.5 INFO : volatility.debug : Determining profile based on KDBG search... Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86) AS Layer1 : IA32PagedMemoryPae (Kernel AS) AS Layer2 : FileAddressSpace (D:\SECCON-2016-Online-CTF\Forensics\100\Memory Analysis\memoryanalysis\forensic_100.raw) PAE type : PAE DTB : 0x34c000L KDBG : 0x80545ce0L Number of Processors : 1 Image Type (Service Pack) : 3 KPCR for CPU 0 : 0xffdff000L KUSER_SHARED_DATA : 0xffdf0000L Image date and time : 2016-12-06 05:28:47 UTC+0000 Image local date and time : 2016-12-06 14:28:47 +0900
どうやらWinXPのメモリダンプらしい
プロセス一覧
volatility-2.5.standalone.exe -f forensic_100.raw psscan Volatility Foundation Volatility Framework 2.5 Offset(P) Name PID PPID PDB Time created Time exited ------------------ ---------------- ------ ------ ---------- ------------------------------ ------------------------------ 0x0000000001805d40 disable_outdate 1376 1928 0x09480360 2016-10-26 09:44:04 UTC+0000 2016-10-26 09:44:04 UTC+0000 0x00000000018dc630 tcpview.exe 2844 1464 0x09480320 2016-12-06 05:13:57 UTC+0000 2016-12-06 05:26:18 UTC+0000 0x0000000001bb4380 tcpview.exe 3308 1556 0x091c0360 2016-12-06 05:28:42 UTC+0000 0x0000000001c18020 smss.exe 540 4 0x091c0020 2016-12-06 05:27:04 UTC+0000 0x0000000001c309e8 vmtoolsd.exe 1820 676 0x04c00260 2016-10-25 10:17:40 UTC+0000 2016-10-26 09:05:05 UTC+0000 0x0000000002018da0 svchost.exe 848 672 0x091c00e0 2016-12-06 05:27:08 UTC+0000 0x0000000002041928 svchost.exe 1320 672 0x091c0180 2016-12-06 05:27:10 UTC+0000 0x000000000204b4b0 vmtoolsd.exe 312 672 0x091c02a0 2016-12-06 05:27:13 UTC+0000 0x000000000204f560 svchost.exe 1704 672 0x091c0200 2016-12-06 05:27:10 UTC+0000 0x0000000002056228 wscntfy.exe 720 1036 0x091c03a0 2016-12-06 05:27:18 UTC+0000 0x00000000020886f0 GoogleUpdate.ex 372 1984 0x091c02c0 2016-12-06 05:27:13 UTC+0000 0x0000000002089200 wmiprvse.exe 596 848 0x091c0340 2016-12-06 05:27:13 UTC+0000 0x00000000020f6da0 csrss.exe 604 540 0x091c0040 2016-12-06 05:27:07 UTC+0000 0x0000000002100558 VGAuthService.e 196 672 0x091c0280 2016-12-06 05:27:13 UTC+0000 0x000000000210dbe0 spoolsv.exe 1644 672 0x091c01e0 2016-12-06 05:27:10 UTC+0000 0x000000000212cb20 wuauclt.exe 3164 1036 0x091c01a0 2016-12-06 05:28:15 UTC+0000 0x0000000002146238 alg.exe 2028 672 0x091c0380 2016-12-06 05:27:16 UTC+0000 0x0000000002165da0 svchost.exe 1776 672 0x091c0220 2016-12-06 05:27:10 UTC+0000 0x000000000218c9a0 lsass.exe 684 628 0x091c00a0 2016-12-06 05:27:07 UTC+0000 0x0000000002192778 svchost.exe 1088 672 0x091c0140 2016-12-06 05:27:08 UTC+0000 0x0000000002262b20 wuauclt.exe 488 1036 0x091c02e0 2016-12-06 05:27:13 UTC+0000 0x0000000002351ca8 svchost.exe 936 672 0x091c0100 2016-12-06 05:27:08 UTC+0000 0x0000000002354880 vmacthlp.exe 836 672 0x091c00c0 2016-12-06 05:27:08 UTC+0000 0x000000000236a5e8 DumpIt.exe 3740 1556 0x091c0320 2016-12-06 05:28:46 UTC+0000 0x000000000236e670 services.exe 672 628 0x091c0080 2016-12-06 05:27:07 UTC+0000 0x0000000002370da0 ctfmon.exe 1872 1556 0x091c0160 2016-12-06 05:27:11 UTC+0000 0x0000000002373da0 winlogon.exe 628 540 0x091c0060 2016-12-06 05:27:07 UTC+0000 0x00000000023f8438 vmtoolsd.exe 1856 1556 0x091c0240 2016-12-06 05:27:11 UTC+0000 0x000000000245bda0 IEXPLORE.EXE 380 1776 0x091c03c0 2016-12-06 05:27:19 UTC+0000 0x0000000002467900 rundll32.exe 1712 1556 0x091c0260 2016-12-06 05:27:16 UTC+0000 0x000000000249f7e8 IEXPLORE.EXE 1080 380 0x091c0300 2016-12-06 05:27:21 UTC+0000 0x0000000002512450 svchost.exe 1036 672 0x091c0120 2016-12-06 05:27:08 UTC+0000 0x000000000251f698 explorer.exe 1556 1520 0x091c01c0 2016-12-06 05:27:10 UTC+0000 0x00000000025c8660 System 4 0 0x0034c000
ニセのsvchost
がアクセスしてるサイトを見つける
次にすべてのsvchost
をダンプする
volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 936 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x82151ca8 0x01000000 svchost.exe OK: executable.936.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 1704 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x81e4f560 0x01000000 svchost.exe OK: executable.1704.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 848 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x81e18da0 0x01000000 svchost.exe OK: executable.848.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 1776 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x81f65da0 0x00400000 svchost.exe OK: executable.1776.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 1320 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x81e41928 0x01000000 svchost.exe OK: executable.1320.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 1088 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x81f92778 0x01000000 svchost.exe OK: executable.1088.exe >volatility-2.5.standalone.exe -f forensic_100.raw procdump -D dump/ -p 1036 Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x82312450 0x01000000 svchost.exe OK: executable.1036.exe
dump$ file * executable.1036.exe: PE32 executable (GUI) Intel 80386, for MS Windows executable.1088.exe: PE32 executable (GUI) Intel 80386, for MS Windows executable.1320.exe: PE32 executable (GUI) Intel 80386, for MS Windows executable.1704.exe: PE32 executable (GUI) Intel 80386, for MS Windows executable.1776.exe: PE32 executable (console) Intel 80386, for MS Windows executable.848.exe: PE32 executable (GUI) Intel 80386, for MS Windows executable.936.exe: PE32 executable (GUI) Intel 80386, for MS Windows
executable.1776.exe
だけ違うので、
$ strings executable.1776.exe | grep http C:\Program Files\Internet Explorer\iexplore.exe http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
何かアクセスしようとしてる・・・
Hint2: Check the hosts file
らしいので、
volatility-2.5.standalone.exe -f forensic_100.raw filescan | grep hosts Volatility Foundation Volatility Framework 2.5 0x000000000217b748 1 0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts
あった!ダンプしてみよう!
volatility-2.5.standalone.exe -f forensic_100.raw dumpfiles -D output/ -Q 0x000000000217b748 Volatility Foundation Volatility Framework 2.5 DataSectionObject 0x0217b748 None \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts
cat file.None.0x819a3008.dat # Copyright (c) 1993-1999 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost 153.127.200.178 crattack.tistory.com
どうやらcrattack.tistory.com
にアクセスしようとすると153.127.200.178
にアクセスしてしまうよう
つまりhttp://153.127.200.178/entry/Data-Science-import-pandas-as-pd
にアクセスすれば良さそう
するとファイルがダウンロードされるので表示するとフラグが手に入る
FLAG:SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}
感想
ほんとにまだまだということがわかったので精進します・・・
友利奈緒になりたい
友利奈緒 彼女はGoogleで検索したときに”友利奈緒 seccon”とサジェストされるようにCTFerにとっての憧れである
この記事はそんな彼女になろうとした話である・・・・
というわけで、これは”友利奈緒 Advent Calendar 2016”の11日目の記事です。
はじめ
“友利奈緒”が文部科学大臣賞を受賞!
画像はhttp://www.data-max.co.jp/280203_knk_1/より
セキュリティの興味がわき始めたときにこのニュースを知り友利奈緒に憧れるようになった いつか友利奈緒でセキュリティコンテストに出たいと思っていたが、チャンスはあったもののなかなか一歩を踏み出せなかった・・・
そして、
高専セクコンで友利奈緒のコスプレしようかな〜?
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月16日
やっと踏ん切りがついた
友利奈緒になるために
なるほど pic.twitter.com/WbEee0u7az
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月16日
間に合わない、、、 pic.twitter.com/weIXxnJGoH
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月16日
あかん、間に合わない、、、 pic.twitter.com/QLiMbeMH4i
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月20日
色々調べてみてウィッグは間に合うけど制服は間に合いそうになかったので、出品者に直接お願いすることに
あぁぁぁ~~~ pic.twitter.com/eVCemt7GI9
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月20日
あぁぁぁぁ~~~~
うわぁ~ん間に合わないよう・・・
すると、
女神様~🙏🙏🙏
これで友利奈緒になるための準備ができた
注文した制服は出品者が優しかったおかげで返金することができた
友利奈緒になる
前日の集合時間・・・
うわぁぁぁ~やってしまった~
ほんとにご迷惑をおかけしました
・・・なんとか1本あとの特急で高知につくことができた
着いた pic.twitter.com/25xGKkSOq8
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月26日
試合開始・・・
サーバーの再起動を待っている間にCharlotte鑑賞会が始まった
Charlotte鑑賞会(サーバー再起動待ち) #KOSENSEC pic.twitter.com/e3l2eJRmoN
— やましー@BiPhone (@yamasy1549) 2016年11月27日
選手からポッキーをもらうという謎の儀式が執り行われました #KOSENSEC pic.twitter.com/lPrVDWbitF
— りょたろ(O23) (@RyoutaK) 2016年11月27日
ちゃんとポッキーも渡した
結果、特別賞をもらいました!
お疲れ様でした!特別賞もらえて良かったです!次はSECCON Online で頑張らなきゃ(^O^)v #KOSENSEC pic.twitter.com/SDEvgtt45X
— Akashi_SN@BiPhone (@Akashi_SN) 2016年11月27日
このツイートをしたら、
野良友利奈緒...
— 【TomoriNao】しふくろ (@shift_crops) 2016年11月27日
何故一人だけ普段着なのか
やるならやるで,もっと完璧を目指そうな(何を要求してるのか) https://t.co/BEgBCfZvAD
本物のTomoriNaoのTomoriNaoさんにアドバイスをもらった🙏
@yamasy1549 @Akashi_SN 制服作るなんて相当手間かかるでしょうに,本当にすごいですわ
— 【TomoriNao】しふくろ (@shift_crops) 2016年11月27日
もしいずれ,チームTomoriNaoに興味があったら是非(笑)
ふぇぇぇ~
頑張ります!
さいご
みんなも友利奈緒になろう!
Nexus5Xを工場出荷時初期化~Xposed導入まで
今まではAndroid 7.0 Nougat
をRoot化して使っていたのだが、最近カメラが落ちる、起動に時間がかかるなどの不具合が出ていた。
更に、相変わらずXposedの開発が終わらないので一旦Android 6.0 Marshmallow
に戻したので、その時のメモ
自己責任でお願いします
環境
- Android 7.0 Nougat
- Androidセキュリティパッチレベル:2016年11月5日
手順
- ファクトリーイメージのダウンロード
- Android SDK(イメージ書き込みの際に必要)のインストール
- ブートローダーアンロックのための前準備
- ブートローダーアンロック(非Rootの場合)
- イメージ書き込み
- 端末の初期設定
- カスタムリカバリの書き込み(Root化する場合)
- SuperSUのインストール(Root化する場合)
- Xposedの導入
ファクトリーイメージのダウンロード
まずAndroid 7.0 Nougat
をAndroid 6.0 Marshmallow
にダウングレードする。
NexusシリーズはGoogleがファクトリーイメージを公開してるので、それを書き込むことで実現する。
Factory Images for Nexus and Pixel Devices
ここで自分に合ったバージョンを選ぶ
今回は"bullhead" for Nexus 5X 6.0.1 (MTC20K)
をダウンロードした。
バージョンの数字のあとに書いてる文字列はビルド番号を表している。
Platform Toolsの入手 (2017/05/26追記)
GoogleからPlatform Toolsのみをダウンロードするリンクが公開されたのでそこから入手する
SDK Platform Tools Release Notes
ここから各プラットフォームに応じてダウンロードして展開する
これからはplatform-tools-latest-windows\platform-tools
以下で作業する
fastboot
などは各自.\fastboot.exe
などに読み替えてください
ブートローダーアンロックのための前準備
ブートローダーをアンロックするとインストールしているアプリなどが削除されるので、バックアップを取る。
また、設定→開発向けオプションからUSBデバッグ、OEMロック解除をそれぞれ設定する。(写真ではもうすでにロック解除されてるので選択できなくなっている。)
設定できたらシャットダウンしておく。
ブートローダーアンロック
電源ボタンと音量ボタンの下を同時に押し続けて、ブートローダーを起動する
DEVICE STATE - locked
となっているのでこれを解除する
ブートローダーを起動した状態で、PCに接続して
コマンドプロンプトを開き
$ fastboot oem unlock
と打ち込み実行する。
するとこういう画面が表示されるので、音量ボタンでYes Unlock bootloader (may void warranty)
を選択し電源ボタンで確定する
$ fastboot oem unlock ... OKAY [233.564s] finished. total time: 233.565s
DEVICE STATE - unlocked
となれば解除成功
ファクトリーイメージの書き込み
先程ダウンロードしたbullhead-mtc20k-factory-4a950470.zip
を解凍する
bullhead-mtc20k\image-bullhead-mtc20k.zip
これも解凍する
bullhead-mtc20k\
ここのディレクトリでShift
を押しながら右クリックして
コマンドウィンドをここで開く(w)
を選択しコマンドプロンプトを開く
次のコマンドを実行する[#]以下はコメントなので実行しない
$ fastboot flash bootloader bootloader-bullhead-bhz10r.img #ブートローダー $ fastboot reboot-bootloader #ブートローダーを再起動 $ fastboot flash radio radio-bullhead-m8994f-2.6.32.1.13.img #ラジオ $ fastboot reboot-bootloader #ブートローダーを再起動 $ cd image-bullhead-mtc20k #ディレクトリ移動 $ fastboot flash boot boot.img #カーネル領域 $ fastboot flash cache cache.img #キャッシュ領域 $ fastboot flash recovery recovery.img #リカバリ領域 $ fastboot flash system system.img #システム領域 $ fastboot format userdata #ユーザーデータの初期化 $ fastboot flash vendor vendor.img #ファイルが存在している端末のみ $ fastboot reboot-bootloader #ブートローダーを再起動
エラーが出なかったら成功
端末の初期設定
端末をPCから抜いて起動
音量ボタンでStart
を選択し、電源ボタンで確定
Androidが起動したら初期設定をする。
初期設定が完了したらまたシャットダウンする。
カスタムリカバリの書き込み
カスタムリカバリのイメージをダウンロード
https://dl.twrp.me/bullhead/から
twrp-3.0.2-2-bullhead.img
をダウンロード
電源ボタンと音量ボタンの下を同時に押し続けてブートローダーを起動する。
先程同じようにダウンロードしたディレクトリでShift
を押しながら右クリックして
コマンドウィンドをここで開く(w)
を選択しコマンドプロンプトを開く
次のコマンドを実行して書き込む
$ fastboot flash recovery twrp-3.0.2-2-bullhead.img $ fastboot reboot-bootloader
$ fastboot flash recovery twrp-3.0.2-2-bullhead.img target reported max download size of 536870912 bytes sending 'recovery' (16433 KB)... OKAY [ 0.444s] writing 'recovery'... OKAY [ 0.147s] finished. total time: 0.596s $ fastboot reboot-bootloader rebooting into bootloader... OKAY [ 0.020s] finished. total time: 0.022s
書き込み成功
SuperSUのインストール
Recovery mode
で起動する
書き込み権限を与えますかと出てくるのでスワイプして許可する
メインメニュー
SperSUをダウンロード
https://download.chainfire.eu/1014/SuperSU/SR5-SuperSU-v2.78-SR5-20161130091551.zip
SR5-SuperSU-v2.78-SR5-20161130091551.zip
をダウンロードして端末にコピーする。
そして、メインメニューの「Install」からSR5-SuperSU-v2.78-SR5-20161130091551.zip
を選択し、スワイプしてインストール。
完了したらReboot System
から再起動
Androidが起動したら、アプリにSuperSU Free
が追加されてることを確認
これでRoot権限が取得できた!
Xposedの導入
リカバリーモードで起動しておく
Nexus5X/Marshmallow
はsdk23/arm64
なので、
http://dl-xda.xposed.info/framework/sdk23/arm64/xposed-v87-sdk23-arm64.zip先程と同じように
xposed-v87-sdk23-arm64.zip
をダウンロードして端末にコピーする
そして、メインメニューの「Install」から先程と同じように、xposed-v87-sdk23-arm64.zip
を選択し、スワイプしてインストール。
完了したらReboot System
から再起動
http://forum.xda-developers.com/showthread.php?t=3034811
公式からXposedInstaller_3.0_alpha4.apk
をダウンロードして端末にコピーする
https://play.google.com/store/apps/details?id=com.estrongs.android.pop&hl=ja
設定→セキュリティから提供元不明アプリのインストールを許可する設定にする
「Google Play Store」から「ES ファイルエクスプローラー」をインストールする。
アプリを起動し、XposedInstaller_3.0_alpha4.apk
を選びインストールする。
インストールできたらXposedの導入完了!
Xposedの豊富なモジュールを楽しもう!
Python3でSQLiteを扱おうとしたときにハマったこと
python3からSQLliteを扱おうとした時にハマったのでメモ
環境
- Python 3.5.2
- SQLite version 3.11.0
- Ubuntu
SQLite3のインストール
$ sudo apt install sqlite3 libsqlite3-dev
動作確認
ファイル構成
root@ubuntu:~/CHUNITHM$ tree . |-- chunithm.db `-- sqlite3.py 0 directories, 2 files
[sqlite3.py]
#!/usr/bin/env python3 import sqlite3 con = sqlite3.connect("/root/CHUNITHM/chunithm.db") c = con.cursor() c.execute("select * from Music") r = c.fetchall() print(r[0])
chunithm.db
の構造
chunithm.db
の中身
実行してみよう!
root@ubuntu:~/CHUNITHM$ python3 sqlite3.py Traceback (most recent call last): File "sqlite3.py", line 3, in module import sqlite3 File "/root/CHUNITHM/sqlite3.py", line 4, in module con = sqlite3.connect("/root/CHUNITHM/chunithm.db") AttributeError: module 'sqlite3' has no attribute 'connect'
AttributeError: module 'sqlite3' has no attribute 'connect'
・・・なんだ?
コマンドラインでは行けるのにファイルにして実行するとエラー出るの何なの💢💢 pic.twitter.com/k63obM568M
— Akashi_SN@BiPhone (@Akashi_SN) 2016年12月2日
Python謎
— Akashi_SN@BiPhone (@Akashi_SN) 2016年12月2日
Python嫌い
— Akashi_SN@BiPhone (@Akashi_SN) 2016年12月2日
Pythonを嫌いになりかけてたとき神リプが送られてきた
@Akashi_SN スクリプトファイル名がsqlite3になっていませんか?importで標準のモジュールではなくスクリプトファイルをimportしているとこうなるケースがあります。
— Noriyuki (@eiryplus) 2016年12月2日
神様🙏🙏🙏
つまりファイル名がsqlite3.py
だったのがまずかったよう
自分のファイルをImportしにいってたからエラーが発生してたよう
ファイル名を別に変えて
root@ubuntu:~/CHUNITHM$ tree . |-- chunithm.db `-- chunithm.py 0 directories, 2 files root@ubuntu:~/CHUNITHM$ python3 chunithm.py (3, 'B.B.K.K.B.K.K.', 'img/d739ba44da6798a0.jpg', None, 11.8)
できた!!!
ほんとしょうもないミスでお恥ずかしいばかりです・・・
@eiryplus様@rikibon_様ほんとにありがとうございました!
UbuntuのApacheでFlaskを用いてPython3でWebアプリケーションを作る
今PHPで作ってるCHUNITHM Rate CalculatorをPython3で作ってみようとしたときの備忘録
環境
- Ubuntu-Server:16.04(64bit)
- Python:3.5.2
前準備
$ sudo apt update
$ sudo apt upgrade
Flaskのインストール
$ sudo apt install python3-dev python3-pip
$ sudo pip3 install Flask
Flaskのインストール中に
locale.Error: unsupported locale setting
こんなエラーが出たら、
$ export LC_ALL=C
を打ってもう一度実行してみる
Apache2とApacheでPython3を使えるようにするmodのインストール
$ sudo apt install apache2
$ sudo apt install libapache2-mod-wsgi-py3
ファイル構成
root@Ubuntu:/var/www$ tree -l
.
└── flask
├── flask_script.py
└── flask_app.wsgi
1 directories, 2 files
アプリケーションの作成
#flask_script.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
.wsgiファイルの作成
#flask_app.wsgi
import os,sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from flask_script import app as application
Apacheの設定
$ sudo vim /etc/apache2/sites-available/flask.conf
Flaskの設定ファイルつくる
#flask.conf
<VirtualHost *:80>
ServerName localhost
WSGIDaemonProcess flask_app user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/flask/flask_app.wsgi
<Directory /var/www/flask>
WSGIProcessGroup flask_app
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
このように設定する。
この時アプリケーションのディレクトリ以下が、www-data
がオーナーになるように所有者を変えておく。
$ sudo chown -R www-data:www-data /var/www/flask/
$ sudo ln -s /etc/apache2/sites-available/flask.conf /etc/apache2/sites-enabled/flask.conf # Apacheに読み込んでもらうために、シンボリックリンクを作成する。
$ sudo rm /etc/apache2/sites-enabled/000-default.conf # デフォルトの設定ファイルを読み込まれないようにする
Apacheを再起動
$ sudo apachectl restart
もし、再起動の時に
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using localhost Set the 'ServerName' directive globally to suppress this message
というエラーが発生したら、
$ sudo echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
$ sudo a2enconf fqdn
と打ち込んで、もう一度再起動する
$ sudo apachectl restart
エラーが出なかったら、http://localhost
にアクセスしてみてHello World!
と表示されれば成功
ファイルを変更した際はApacheを再起動しないといけないよう?