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用アプリケーションをネイティブ動作させることを目標とするプログラム群である。

https://www.winehq.org/

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
↑コメントアウトを外す

もし見つけられなければ、システム設定→ソフトウェアとアップデート→他のソフトウェア

f:id:akashisn:20181027131750p:plain

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

この時makemake -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

f:id:akashisn:20181027131822p:plain

WindowsのバージョンをWindows7に変更する

確認

上記のことができたかを確認する

$ wine uninstaller

f:id:akashisn:20181027131835p:plain

このように文字化けがなくなっていてwine-monowine-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-

f:id:akashisn:20181027131621p:plain

SECCONとは・・・http://2016.seccon.jp/about/

情報セキュリティをテーマに多様な競技を開催する情報セキュリティコンテストイベントです。

SECCONオンライン予選「SECCON 2016 Online CTF」に参加してきました

この記事は「CTF Advent Calendar 2016」の13日目の記事です

今回はあまり解けていないのでそのあたりは・・・

f:id:akashisn:20181027131647p:plain

今回は解いている人が多いこの3問しか解けませんでした・・・

BiPhone(@Akashi_SN,@Snow_Poijio,@yamasy1549)で出場し、

f:id:akashisn:20181027131703p:plain

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]}.

voip.pcap

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 

memoryanalysis.zip

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_}

感想

ほんとにまだまだということがわかったので精進します・・・

友利奈緒になりたい

友利奈緒 f:id:akashisn:20181027131121p:plain 彼女はGoogleで検索したときに”友利奈緒 seccon”とサジェストされるようにCTFerにとっての憧れである

この記事はそんな彼女になろうとした話である・・・・

というわけで、これは”友利奈緒 Advent Calendar 2016”の11日目の記事です。

はじめ

“友利奈緒”が文部科学大臣賞を受賞!

f:id:akashisn:20181027131249j:plain

画像はhttp://www.data-max.co.jp/280203_knk_1/より

セキュリティの興味がわき始めたときにこのニュースを知り友利奈緒に憧れるようになった いつか友利奈緒でセキュリティコンテストに出たいと思っていたが、チャンスはあったもののなかなか一歩を踏み出せなかった・・・

そして、

やっと踏ん切りがついた

友利奈緒になるために

色々調べてみてウィッグは間に合うけど制服は間に合いそうになかったので、出品者に直接お願いすることに

あぁぁぁぁ~~~~

うわぁ~ん間に合わないよう・・・

すると、

f:id:akashisn:20181027131426p:plain

女神様~🙏🙏🙏

これで友利奈緒になるための準備ができた

注文した制服は出品者が優しかったおかげで返金することができた

友利奈緒になる

前日の集合時間・・・

f:id:akashisn:20181027131447p:plain

うわぁぁぁ~やってしまった~

ほんとにご迷惑をおかけしました

・・・なんとか1本あとの特急で高知につくことができた

試合開始・・・

サーバーの再起動を待っている間にCharlotte鑑賞会が始まった

ちゃんとポッキーも渡した

結果、特別賞をもらいました!

このツイートをしたら、

本物のTomoriNaoのTomoriNaoさんにアドバイスをもらった🙏

ふぇぇぇ~

頑張ります!

さいご

みんなも友利奈緒になろう!

Nexus5Xを工場出荷時初期化~Xposed導入まで

今まではAndroid 7.0 NougatをRoot化して使っていたのだが、最近カメラが落ちる、起動に時間がかかるなどの不具合が出ていた。 更に、相変わらずXposedの開発が終わらないので一旦Android 6.0 Marshmallowに戻したので、その時のメモ

自己責任でお願いします

環境

  • Android 7.0 Nougat
  • Androidセキュリティパッチレベル:2016年11月5日

手順

  1. ファクトリーイメージのダウンロード
  2. Android SDK(イメージ書き込みの際に必要)のインストール
  3. ブートローダーアンロックのための前準備
  4. ブートローダーアンロック(非Rootの場合)
  5. イメージ書き込み
  6. 端末の初期設定
  7. カスタムリカバリの書き込み(Root化する場合)
  8. SuperSUのインストール(Root化する場合)
  9. Xposedの導入

ファクトリーイメージのダウンロード

まずAndroid 7.0 NougatAndroid 6.0 Marshmallowにダウングレードする。

NexusシリーズはGoogleがファクトリーイメージを公開してるので、それを書き込むことで実現する。

Factory Images for Nexus and Pixel Devices

ここで自分に合ったバージョンを選ぶ

今回は"bullhead" for Nexus 5X 6.0.1 (MTC20K)をダウンロードした。

バージョンの数字のあとに書いてる文字列はビルド番号を表している。

f:id:akashisn:20181027125452p:plain

Platform Toolsの入手 (2017/05/26追記)

GoogleからPlatform Toolsのみをダウンロードするリンクが公開されたのでそこから入手する

SDK Platform Tools Release Notes

ここから各プラットフォームに応じてダウンロードして展開する

これからはplatform-tools-latest-windows\platform-tools以下で作業する

fastbootなどは各自.\fastboot.exeなどに読み替えてください

ブートローダーアンロックのための前準備

ブートローダーをアンロックするとインストールしているアプリなどが削除されるので、バックアップを取る。

また、設定→開発向けオプションからUSBデバッグ、OEMロック解除をそれぞれ設定する。(写真ではもうすでにロック解除されてるので選択できなくなっている。)

設定できたらシャットダウンしておく。

f:id:akashisn:20181027125720p:plainf:id:akashisn:20181027125615p:plain

ブートローダーアンロック

電源ボタンと音量ボタンの下を同時に押し続けて、ブートローダーを起動する

f:id:akashisn:20181027125832j:plain

DEVICE STATE - lockedとなっているのでこれを解除する

ブートローダーを起動した状態で、PCに接続して

コマンドプロンプトを開き

$ fastboot oem unlock

と打ち込み実行する。

f:id:akashisn:20181027125923j:plain

するとこういう画面が表示されるので、音量ボタンでYes Unlock bootloader (may void warranty)を選択し電源ボタンで確定する

$ fastboot oem unlock
...
OKAY [233.564s]
finished. total time: 233.565s

f:id:akashisn:20181027130013j:plain

DEVICE STATE - unlockedとなれば解除成功

ファクトリーイメージの書き込み

先程ダウンロードしたbullhead-mtc20k-factory-4a950470.zipを解凍する

bullhead-mtc20k\image-bullhead-mtc20k.zipこれも解凍する

bullhead-mtc20k\ここのディレクトリでShiftを押しながら右クリックして

コマンドウィンドをここで開く(w)を選択しコマンドプロンプトを開く

f:id:akashisn:20181027130130p:plain

次のコマンドを実行する[#]以下はコメントなので実行しない

$ 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で起動する

f:id:akashisn:20181027130447j:plain

書き込み権限を与えますかと出てくるのでスワイプして許可する

f:id:akashisn:20181027130523j:plain

メインメニュー

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を選択し、スワイプしてインストール。

f:id:akashisn:20181027130633j:plainf:id:akashisn:20181027130636j:plain

完了したらReboot Systemから再起動

f:id:akashisn:20181027130724j:plain

Androidが起動したら、アプリにSuperSU Freeが追加されてることを確認

f:id:akashisn:20181027130805p:plain

これでRoot権限が取得できた!

Xposedの導入

リカバリーモードで起動しておく

Nexus5X/Marshmallowsdk23/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の構造

f:id:akashisn:20181027124844p:plain

chunithm.dbの中身

f:id:akashisn:20181027124909p:plain

実行してみよう!

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'・・・なんだ?

Pythonを嫌いになりかけてたとき神リプが送られてきた

神様🙏🙏🙏

つまりファイル名が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-mod_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を再起動しないといけないよう?