たれながし.info

派遣で働くITエンジニアの備忘録

仮想環境でWindows XPを動かす

Windows XP環境を使いたいなーと思ってググったら、「XP Mode」からWindows XPの仮想ディスクを取り出して仮想環境で動かす方法が見つかったので実施してみます。

既に「XP Mode」の公開は終了したみたいです。「XP Mode」はWindows10にインストールできません。

仮想マシンの構築

1. Windows XP Modeのダウンロード

https://www.microsoft.com/ja-jp/download/details.aspx?id=8002

上記サイトに接続すると404となります。「XP Mode」の公開は終了しているみたいです。
インストーラのファイル名、ハッシュ値は下記です。

名前 WindowsXPMode_ja-jp.exe
サイズ 631040784 バイト (601 MiB)
SHA1 CB70F01EAC34A4039C77E728F7D9AC1D99F6D6A9
SHA256 9983F09FDBF3197A69CA9530849A120E47ADE9C50C29FCF2E09236938BEF16F3

2. インストーラの解凍

インストーラを解凍する

3. 仮想HDDの取り出し

sourcesフォルダがあるので、バッチファイルを作成し実行する。


msiexec.exe /a xpminstl32.msi targetdir=%~dp0xpmode
※「%~dp」はカレントディレクトリ

「xpmode\Program Files\Windows XP Mode」に仮想ディスクができます。

4. 「読み取り専用」の解除

「読み取り専用」となっているので、解除します。

5. 仮想マシンの作成

仮想ディスクを参照する形で仮想マシンを作成します。

ライセンス認証について
この方法で作成したWindowsXPのライセンス期限は30日となっています。
BIOS書き換えで認証済みとなるようですが、有効なライセンスを持ってない場合は問題な気がします。

ハマリポイント

VirtualBoxでGuest Addinのインストールが上手くいかない場合

古いバージョン(5.1.0とか)だとうまくいくかもしれません。
下記からISOをダウンロードし、仮想マシンのCDドライブにマウントして使います。
http://download.virtualbox.org/virtualbox/

VirtualBoxでのリモートデスクトップの設定

1. 仮想マシンの設定を開く
2. ディスプレイ > リモートディスプレイからサーバーを有効化する
 ※ポートはホストOSで使用していないポートを指定します(例:3390)
3. リモートデスクトップで接続する
 ※ホストOSから接続する場合は「localhost:3390」になります。

INetSimを使ってみた

マルウェアの動的解析に利用できる「INetSim」を使ってみたのでメモします。

はじめに

INetSim:(Internet Services Simulation)について

InetSimはマルウェアの動的解析に利用する目的で開発されたツールです。Perlで実装されています。
マルウェアが使用するネットワークプロトコルのサーバー側の動作をシミュレートします。
HTTP(S)、SMTP(S)、DNSといったメジャーなプロトコルに加え、Daytime、Echoなど今日ではほとんど使われないプロトコルもシミュレートします。

<公式サイト>
www.inetsim.org


同様のツールには、fireeyeのFakeNet-NGがあります。
github.com


検証環境

  • Ubuntu 20.04 LTS
  • INetSim 1.3.2

構築

インストール

リポジトリを登録してインストールする

sudo bash
echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list
wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | apt-key add -
apt update
apt install inetsim

設定

サービスの待ち受けIPアドレスDNSで返答するIPアドレスを設定する ※デフォルトは127.0.0.1

sudo vi /etc/inetsim/inetsim.conf
→下記を追記
service_bind_address [IPアドレス]
dns_default_ip [IPアドレス]


サービスが利用するファイルは「/var/lib/inetsim」にある。
※証明書、Webコンテンツ、メールボックスなど

ls -l /var/lib/inetsim
total 32
drwxr-xr-x 2 inetsim inetsim 4096  2月 21 00:50 certs
drwxr-xr-x 2 inetsim inetsim 4096  2月 21 00:50 finger
drwxr-xr-x 4 inetsim inetsim 4096  2月 21 00:50 ftp
drwxr-xr-x 5 inetsim inetsim 4096  2月 21 00:50 http
drwxr-xr-x 2 inetsim inetsim 4096  2月 21 00:50 pop3
drwxr-xr-x 2 inetsim inetsim 4096  2月 21 00:50 quotd
drwxrwxr-x 2 inetsim inetsim 4096  2月 21 00:50 smtp
drwxr-xr-x 4 inetsim inetsim 4096  2月 21 00:50 tftp

起動

サービス、もしくプロセスとして起動します。

・サービスとして起動する場合
sudo systemctl start inetsim

・プロセスとして起動する場合
sudo inetsim

ログ

ls -l /var/log/inetsim/
total 40
-rw-rw---- 1 root inetsim     0  2月 21 00:50 debug.log
-rw-rw---- 1 root inetsim 11418  2月 21 02:25 main.log
drwxrwxr-x 2 root inetsim  4096  2月 21 00:50 report
-rw-rw---- 1 root inetsim 22416  2月 21 03:02 service.log

サポートするサービス一覧

No サービス プロトコル ポート番号 用途
1 HTTP tcp 80 HTTP通信
2 HTTPS tcp 443 HTTP通信(TLS対応)
3 SMTP tcp 25 メール送信
4 SMTPS tcp 465 メール送信(TLS対応)
5 POP3 tcp 110 メール受信
6 POP3S tcp 995 メール受信(TLS対応)
7 DNS tcp/udp 53 名前解決
8 FTP tcp 21 ファイルやり取り
9 FTPS tcp 990 ファイルやり取り(TLS対応)
10 TFTP udp 69 軽量なファイルやり取り
11 IRC tcp 6667 インスタントメッセンジャー
12 NTP udp 123 時刻同期
13 Ident tcp 113 認証
14 Finger tcp 79 リモートコンピュータの情報取得
15 Syslog udp 514 ログ転送
16 Daytime tcp/udp 13 時刻表示
17 Time tcp/udp 37 時刻同期
18 Echo tcp/udp 7 ラウンドトリップタイム計測
19 Chargen tcp/udp 19 任意の文字列を返答
20 Discard tcp/udp 9 受信データの廃棄
21 Quotd tcp/udp 17 今日のひとことを返答
22 Dummy tcp/udp 1 受信データのログ記録

Microsoft Defender Antivirusの定義ファイルの中を見たい。

直近1~2週間でDefender AVの誤検知が3~4回あったので、定義ファイルってどうなってるの?と思って調べてみたメモです。(定義ファイルが読めれば、誤検知の原因も分かるんじゃないかと。)
結論を先に言います。→ 「バイナリファイルだったのでよく分からなかった。」です。

調べた内容

定義ファイルの保存場所

定義ファイルの保存場所は「C:\ProgramData\Microsoft\Windows Defender\Definition Updates\{GUID}」です。
エンジンも同じ場所に保存されています。

f:id:tarenagashi_info:20210220062632p:plain:w600

  • mpengine.dll:AVエンジン
  • mpav*.vdm:AntiVirusの定義ファイル
  • mpas*.vdm:AntiSpaywareの定義ファイル

ファイル形式

拡張子は「vdm」となっていますが、ファイル形式はPEフォーマットでした。(先頭2バイトが0x4D5A)

f:id:tarenagashi_info:20210220063507p:plain:w600

PeStudioというビューアで見てみました。
https://www.winitor.com/

DLLとして作成されていました。
f:id:tarenagashi_info:20210220114921p:plain:w600

定義は圧縮されてリソースとして格納されているもよう。
f:id:tarenagashi_info:20210220114432p:plain:w600

バージョン情報

f:id:tarenagashi_info:20210220115225p:plain:w600

各ファイルのファイルバージョンは以下の通り。

ファイル名 バージョン 備考
mp*base.vdm 1.331.0.0 ベースファイル
mp*dlta.vdm 1.331.1374.0 差分ファイル
  • mp*base.vdmが名前の通りベースファイルで、mp*dlta.vdmが差分ファイル。
    通信負荷を抑えるためか、サイズが小さい差分ファイルを頻繁に更新し、サイズが大きいベースファイルの更新頻度は低いもよう(ファイルの作成日時から推測)
  • AntiVirusとAntiSpaywareの定義バージョンは同一だった。ファイルバージョン=定義バージョンだった
  • 定義ファイルにはMicrosoftの署名が付いている。署名付ける目的でPEフォーマットなのか?
> Get-MpComputerStatus | Select-Object *Version

AMEngineVersion             : 1.1.17800.5
AMProductVersion            : 4.18.2101.9
AMServiceVersion            : 4.18.2101.9
AntispywareSignatureVersion : 1.331.1374.0
AntivirusSignatureVersion   : 1.331.1374.0
NISEngineVersion            : 1.1.17800.5
NISSignatureVersion         : 1.331.1374.0

NISは「Network Inspection System(ネットワーク検査システム)」のことらしい

定義ファイルを解凍する

vdmファイルには定義が圧縮されて格納されているらしいです。
解凍するためのPowerShellスクリプトGitHubで公開されていたので使ってみます。



> ls mpavbase.vdm | .\ExpandDefenderSig.ps1 -OutputFileName mpavbase.decompressed
...
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2021/02/20     12:35       78778304 mpavbase.decompresseds

解凍したらファイルサイズが約1.6倍になりました。
f:id:tarenagashi_info:20210220123858p:plain:w600

バイナリ形式らしく、ここからどうしたら良いかわからず諦めました。
「Hupigon」はWindowsバックドアマルウェアの名前らしい。

f:id:tarenagashi_info:20210220124441p:plain:w600


おまけ

Defender AVのリバースエンジニアリングの発表@2018年BlackHat

www.youtube.com

  • 発表スライド(PDF)

https://i.blackhat.com/us-18/Thu-August-9/us-18-Bulazel-Windows-Offender-Reverse-Engineering-Windows-Defenders-Antivirus-Emulator.pdf


DefenderCheck
与えたファイルのどの部分をDefenderが悪性と判定するか特定するツールなもよう、C#製。
github.com

WDExtract
こちらの「WDExtract」も定義ファイルの解凍に使えるツールです。
exeファイルなので、こちらの方が使いやすいかも
github.com

Ubuntu 20.04 LTSでWineを使ってみる

WindowsアプリをLinux上で動かす仕組み「Wine」を使ってみたのでメモします。

はじめに

WineのWindowsのヘッダファイルには、マイクロソフトが公開していない情報が書いてあったりするらしいです(多分、色々なプログラムを解析して分かった非公式情報が書いてある)。
ということで、Wineに詳しくなればWindowsにも詳しくなれるんじゃないかと思って「Wine」を使ってみたのでメモします。

検証環境

  • OS: Ubuntu 20.04 LTS
  • Wine: 6.0.0~focal-1

Wineのインストールと設定

インストール

リポジトリを追加してインストールします。
公式のインストール手順はこちら → https://wiki.winehq.org/Ubuntu

・32bitアーキテクチャを有効にする
sudo dpkg --add-architecture i386 

・リポジトリのキーを追加する
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key

・リポジトリの追加
# Ubuntu 20.10の場合
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ groovy main'

# Ubuntu 20.04の場合
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'

# Ubuntu 20.04の場合
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

・パッケージのインストール
sudo apt update
sudo apt install --install-recommends winehq-stable

パッケージのインストール中に「libc6-i386」に関するエラーが出ましたが、このまま進めてみます。

sudo apt install --install-recommends winehq-stable
...
E: 'libc6:i386' を設定できませんでした。
E: 'libgcc-s1:i386' の即時設定は動作しません。詳細については man 5 apt.conf の APT::Immediate-Configure の項を参照してください。(2)

初期設定

GUIで下記コマンドを実行する。

winecfg

「Wine Mono」「Wine Gecko」のインストールを即されるのでインストールする。
インストールが完了すると設定画面が開くのでWindowsバージョンを「Windows 10」に設定する。

f:id:tarenagashi_info:20210213171145p:plain

デフォルトだと「/home/<ユーザー名>/.wine」にCドライブができます。

ls -l ~/.wine
合計 2840
drwxrwxr-x 2 test test    4096  2月 13 17:06 dosdevices
drwxrwxr-x 7 test test    4096  2月 13 17:06 drive_c
-rw-rw-r-- 1 test test 2835844  2月 13 17:07 system.reg
-rw-rw-r-- 1 test test   56978  2月 13 17:07 user.reg
-rw-rw-r-- 1 test test    3228  2月 13 17:05 userdef.reg

Winetricksのインストールと設定

Winetricksを使うとWineの初期状態では不足しているDLLやフォントを簡単にインストールできるらしいです。
Winetricksの説明はこちら → https://wiki.winehq.org/Winetricks

Winetricksのダウンロード

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks

DLL一覧の確認とインストール

./winetricks dlls list
./winetricks [dll名]

フォント一覧の確認とインストール

./winetricks fonts list
./winetricks [フォント名]

Windowsアプリのインストールと実行

7-zipをインストールして起動してみます。

64bit版の7-zipをダウンロードしてインストーラを起動する

wget https://www.7-zip.org/a/7z2100-x64.exe
wine 7z2100-x64.exe

インストーラが起動するのでインストールする
f:id:tarenagashi_info:20210213180903p:plain

7-zipのファイルマネージャーを起動する

cd ~/.wine/drive_c/Program Files/7-Zip
wine 7zFM.exe

f:id:tarenagashi_info:20210213180924p:plain

Tips

動作報告ページ

公式サイトにAppDBというページがあり、アプリの動作報告が投稿されています。
https://appdb.winehq.org/

メニューの「Browse Apps」をクリックすると検索ページに飛びます。
f:id:tarenagashi_info:20210214024610p:plain

インストール場所、アーキテクチャを指定する環境変数

デフォルトではCドライブは「~/.wine/drive_c」、アーキテクチャは「64bit」になります。
変更したい場合は環境変数で指定します。

環境変数 用途
WINEPREFIX インストール場所の指定
WINEARCH アーキテクチャ

公式ページのFAQに説明があります。 → https://wiki.winehq.org/FAQ#Wineprefixes

「~/.7-zip」配下に32bit環境のWineを準備して32bit版7-zipをインストールする場合

WINEPREFIX=~/.7-zip WINEARCH=win32 winecfg
WINEPREFIX=~/.7-zip wine 7z2100.exec
cd ~/.7-zip/drive_c/Program Files/7-Zip
wine 7zFM.exe
  • winecfgで32bit環境を作成したら、その後は「WINEARCH」での指定は不要
  • インストール時はどの環境にインストールするか「WINEPREFIX」で指定する

Jetson Nano 2GBにCOLMAPをインストールする

Jetson Nano 2GBにCOLMAPをインストールした時のメモになります。

はじめに

Jetson Nano 2GBにCOLMAPをインストールした時のメモになります。

COLMAPの公式ドキュメントに沿ってインストール作業を実施したところ、COLMAPのビルドでエラーが発生しました。UbuntuリポジトリからインストールしたQt5に問題があるようだったので、Qt5をソースからビルドしてインストールしたところ、COLMAPのビルドも成功しました。

Qt5をリポジトリからインストールした時のCOLMAPのビルドエラーは「COLMAPのビルドで発生したエラー」に記載しています。

COLMAPについて

画像から3次元データを作成してくれるソフトウェア(という認識)です。

f:id:tarenagashi_info:20201228062402p:plain

環境

  • Jetson Nano 2GB
    • OS:Ubuntu 18.04.5 LTS(jetson-nano-2gb-jp441-sd-card-image)
    • COLMAP:3.7
    • Qt5:5.12.11
    • Ceres Solver:2.0.0

COLMAPインストール

パッケージのインストール

sudo apt -y install \
    git \
    cmake \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-regex-dev \
    libboost-system-dev \
    libboost-test-dev \
    libeigen3-dev \
    libsuitesparse-dev \
    libfreeimage-dev \
    libgoogle-glog-dev \
    libgflags-dev \
    libglew-dev \
    libcgal-dev

Ceres Solverのビルドとインストール

sudo apt-get install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout $(git describe --tags) # Checkout the latest release
mkdir build
cd build
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j4
sudo make install

Qt5のビルドとインストール

ソースからQt5を導入します。

<参考手順>


パッケージのインストール

sudo vi /etc/apt/sources.list
→「#deb-src」のコメントアウトを解除

sudo apt update

sudo apt-get -y  build-dep qt5-default
sudo apt-get -y install libxcb-xinerama0-dev 
sudo apt-get -y install build-essential perl python git
sudo apt-get -y install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt-get -y install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs
sudo apt-get -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev
sudo apt -y install libclang-6.0-dev llvm-6.0


ビルド実施

git clone git://git.qt-users.jp/mirror/qt/qt5.git --branch 5.12
cd qt5
./init-repository --module-subset=qtbase,qtdeclarative,qt3d
mkdir build
cd build
../configure -opensource -confirm-license
make -j4
sudo make install


ライブラリにパスを通す

cd /etc/ld.so.conf.d
echo "/usr/local/Qt-5.12.11/lib" | sudo tee -a Qt-5.12.11.conf
sudo ldconfig -v

COLMAPのビルドとインストール

cmakeの「-D」オプションで「CMAKE_PREFIX_PATH」にQt5のパスを渡します。

git clone https://github.com/colmap/colmap.git
cd colmap
git checkout dev
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/usr/local/Qt-5.12.11 ..
make -j4
sudo make install

動作確認

CUIの場合

colmap -h
COLMAP 3.7 -- Structure-from-Motion and Multi-View Stereo
              (Commit ec6c2aa on 2020-12-22 with CUDA)

Usage:
  colmap [command] [options]
...

GUIの場合

colmap gui

f:id:tarenagashi_info:20201229152916p:plain

COLMAPのビルドで発生したエラー

Qt5をUbuntuリポジトリからインストールした際に発生したCOLMAPのビルドエラーは以下になります。クラス「QOpenGLFunctions_3_2_Core」が見つからないというエラーみたいです。

[ 78%] Building CXX object src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o
In file included from /home/test/colmap/src/ui/main_window.h:50:0,
                 from /home/test/colmap/src/ui/automatic_reconstruction_widget.cc:34:
/home/test/colmap/src/ui/model_viewer_widget.h:55:63: error: expected class-name before ‘{’ token
                           protected QOpenGLFunctions_3_2_Core {
                                                               ^
In file included from /home/test/colmap/src/ui/main_window.h:50:0,
                 from /home/test/colmap/src/ui/bundle_adjustment_widget.cc:35:
/home/test/colmap/src/ui/model_viewer_widget.h:55:63: error: expected class-name before ‘{’ token
                           protected QOpenGLFunctions_3_2_Core {
                                                               ^
src/CMakeFiles/colmap.dir/build.make:1718: recipe for target 'src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o' failed
make[2]: *** [src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
src/CMakeFiles/colmap.dir/build.make:1742: recipe for target 'src/CMakeFiles/colmap.dir/ui/bundle_adjustment_widget.cc.o' failed
make[2]: *** [src/CMakeFiles/colmap.dir/ui/bundle_adjustment_widget.cc.o] Error 1
CMakeFiles/Makefile2:1009: recipe for target 'src/CMakeFiles/colmap.dir/all' failed
make[1]: *** [src/CMakeFiles/colmap.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2


確認した感じだと以下のファイルに問題がありそうでした。

  • /usr/include/aarch64-linux-gnu/qt5/QtGui/qtgui-config.h
    → コンフィグの内容がJetson Nanoにあっていない?
  • /usr/include/aarch64-linux-gnu/qt5/QtGui/QOpenGLFunctions_3_2_Core
  • /usr/include/aarch64-linux-gnu/qt5/QtGui/QOpenGLVersionFunctions
    → ヘッダに宣言されている関数の定義がない

Jetson Nano 2GBのOSインストールと初期設定

Jetson Nano 2GBを購入したので、OSインストールと初期設定をします。

はじめに

環境

Jetson Nanoの起動に必要なもの

  • Jetson Nano 2GB
  • MicroSDカード ※32GB/UHS-1以上推奨
  • USB-TypeC ACアダプタ ※5V/3A

OSインストールに必要なもの

  • Windows10/Mac/Linux PC ※要MicroSD読み書き環境
  • USBマウス/USBキーボード

ネットワーク接続のため有線LAN環境/Wifi環境も必要です。

公式マニュアル

developer.nvidia.com

OSインストール

Windows10 PCを使用した場合になります。Mac/Linuxを使用する場合の手順とは異なります。

MicroSDカードのフォーマット

SDアソシエーションが公開する「SDメモリカードフォーマッター」でフォーマットします。OS付属のフォーマッターだと最適化されていない可能性があるので、「SDメモリカードフォーマッター」を使った方が良いそうです。

公式サイトからダウンロード
SDメモリカードフォーマッター - SD Association

インストールし起動する
MicroSDカードを「クイックフォーマット」する
f:id:tarenagashi_info:20201218235053p:plain

OSのインストール

NVIDIAの公式サイトから「OSイメージ」をDLして「Ether」でMicroSDに書き込みます。
OSイメージは4GB用と2GB用とで異なるので注意する必要があります。
OSイメージは圧縮状態で6GB、解凍すると13.4GBあります。

OSイメージをDLする
developer.nvidia.com

OSイメージを解凍する
f:id:tarenagashi_info:20201219001154p:plain

EtherをDLする
www.balena.io

Etherを起動してMicroSDにOSイメージを書き込む
f:id:tarenagashi_info:20201219011319p:plain

起動、初期設定、シャットダウン

起動と初期設定

MicroSDをJetSon Nanoに挿入しACアダプタを接続すると起動します。

初期設定

初回起動時に下記を設定します。
言語設定は初期設定は英語を選んだ方が良いらしい。日本語化する場合は初期設定完了後に言語パックを入れて設定する。

シャットダウン

GUIのメニュー経由かCUIで終了する

sudo shutdown -h now

各種設定

sshサーバー

OSインストール時点でsshサーバーの起動は有効です。

$ sudo systemctl is-enabled ssh
enabled

起動モードの変更

リソース節約のため、起動モードを変更します。

sudo systemctl get-default
graphical.target

sudo systemctl set-default multi-user.target
sudo shutdown -r now

xrdpのインストールと設定

GUIでリモート接続できるようにxrdpをインストールする。
パッケージをインストールすると自動起動する。

$ sudo apt -y install xrdp
$ echo "lxsession -s LXDE -e LXDE" >~/.xsession

xfce4のインストール

$ sudo apt-get install xfce4
$ echo xfce4-session >~/.xsession

スワップ領域

スワップ領域を確認します。
「/dev/zramX」はCPUコア毎のスワップ領域らしいです。
「/swapfile」はOS初回起動時に作成した4GBのスワップ領域です。

$ swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file            4194300 0       -1
/dev/zram0                              partition       253420  0       5
/dev/zram1                              partition       253420  0       5
/dev/zram2                              partition       253420  0       5
/dev/zram3                              partition       253420  0       5

状態確認コマンド

動作周波数の確認

$ sudo jetson_clocks --show
SOC family:tegra210  Machine:NVIDIA Jetson Nano 2GB Developer Kit
Online CPUs: 0-3
CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=1479000 CurrentFreq=710400 IdleStates: WFI=1 c7=1
cpu1: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=1479000 CurrentFreq=921600 IdleStates: WFI=1 c7=1
cpu2: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=1479000 CurrentFreq=825600 IdleStates: WFI=1 c7=1
cpu3: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=1479000 CurrentFreq=921600 IdleStates: WFI=1 c7=1
GPU MinFreq=76800000 MaxFreq=921600000 CurrentFreq=76800000
EMC MinFreq=204000000 MaxFreq=1600000000 CurrentFreq=1600000000 FreqOverride=0
Fan: speed=0
NV Power Mode: MAXN

CUDAのバージョン確認

$ /usr/local/cuda-10.2/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_21:14:42_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

Torで.onionドメインのWebサーバーを立ててみた

Torを使って.onionドメインのWebサーバーを立ててみました。

はじめに

最近はダークウェブの監視ツールや監視サービスを販売しているセキュリティ企業が増えてきている気がします。(イスラエルの企業「IntSights社」や「ノートンダークウェブモニタリング」とか)
ということで、ダークウェブに興味が出始めたので.onionドメインのWebサーバーを立ててみました。

環境

  • OS:CentOS7.9
    • Webサーバー:Apache 2.4.6
    • Tor:0.3.5.12

※Torが使えれば、OSとWebサーバーは何でも良い
※サーバーはグローバルIPを持つ必要はなく、ファイアウォールの受信ポートも開ける必要はない

公式ドキュメント

設定方法はTorプロジェクトのサイトに記載があります。

2019.www.torproject.org

サーバー構築

OS設定

SELinuxは無効にしておきます。

# getenforce
Disabled

Apacheのインストールと設定

8080/tcpで待ち受けるように設定します。

Apacheをインストール

# yum -y install httpd

ポート設定

# sed -i -e 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf

コンテンツの作成

# echo "Hello .onion" > /var/www/html/index.html

起動設定

# systemctl start httpd

動作確認

# curl http://localhost:8080
Hello .onion

Torのインストールと設定

epelからTorをインストールする

# yum -y install epel-release
# yum -y install tor

設定ファイルの中盤に「##############This section is just for location-hidden services ###」というセクションがあるので2行追記する

#vi /etc/tor/torrc
...
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080
...

「HiddenServiceDir」には.onionドメイン名や秘密鍵を保存するフォルダ名を指定する。
「HiddenServicePort」はTorの待ち受けポートと転送先を指定する。

起動する

# systemctl start tor

動作確認

.onionドメインを確認する

# ls -l /var/lib/tor/hidden_service
total 12
drwx------ 2 toranon toranon  6 Dec 19 02:56 authorized_clients
-rw------- 1 toranon toranon 63 Dec 19 04:19 hostname
-rw------- 1 toranon toranon 64 Dec 19 02:56 hs_ed25519_public_key
-rw------- 1 toranon toranon 96 Dec 19 02:56 hs_ed25519_secret_key

# cat /var/lib/tor/hidden_service/hostname
trpqbrwso7iradhxvg7fg7csincffnjnroluut4qfivm6ri6iohwueqd.onion

「hostname」に.onionドメインが書いてあります。その.onionドメインは「secret_key」から作成されるようです。ということで、長期運用する場合は「secret_key」のバックアップを取って置いた方が良いらしい。(「secret_key」があれば、同じ.onionドメインのサーバーを立てられる。)

Torブラウザで接続できることを確認する
f:id:tarenagashi_info:20201219132704p:plain