gmt24

WSL2のKaliからローカルVMのMetasploitableに接続する

 article  Comments Off on WSL2のKaliからローカルVMのMetasploitableに接続する
Sep 292020
 

WSL2はHyper-Vテクノロジー下で動作するようになりました。

仮想マシンとして動作するようになり、速度も向上、Windowsファイルシステムの呪縛から解き放たれとよいことづくめのように思えますが、同ホスト上のHyper-V仮想マシンと接続できないという問題があります。

WSL2の仮想マシンは独自のHyper-V仮想スイッチ(デフォルトだとvEthernet (WSL))に接続されるためです。
当面の解決方法ですが、Hyper-V仮想マシンもWSL仮想スイッチに接続するか、下記Issueのコメントにあるように仮想スイッチ間の転送を許可することで接続できるようになります。

After converting to WSL2 no longer able to route traffic to other VSwitches on the same host. #4288

Get-NetIPInterface | where {$_.InterfaceAlias -eq 'vEthernet (WSL)' -or $_.InterfaceAlias -eq 'vEthernet (Default Switch)'} | Set-NetIPInterface -Forwarding Enabled

ただ残念ながらホスト再起動でリセットされてしまうようです。Administrator権限での実行が必要なこともあり対応が面倒ですので、よい対策が生まれることを期待したいと思います。

pamアップデートでlogin不可に

 article  Comments Off on pamアップデートでlogin不可に
Aug 212020
 

Arch Linuxをアップグレードしたらloginできなくなりました。

インストーラーのISOで起動して/var/log/pacman.logを確認すると、pam関係のアップグレードが実行されています。

[ALPM] warning: /etc/pam.d/system-login installed as /etc/pam.d/system-login.pacnew
[ALPM] upgraded pambase (20190105.1-2 -> 20200721.1-2)
[ALPM] upgraded pam (1.3.1-2 -> 1.4.0-3)

あ。lxcをつかうために/etc/pam.d/system-authにpam_cgfs.soのエントリーを追加していたのが原因でした。

Linux Containers – ArchWiki

/usr/lib/security/pam_cgfs.soはpambaseパッケージからlxcパッケージに移動したとのことで、system-loginファイルをデフォルト(.pacnewのファイル)に戻して解決。

lxcパッケージは削除したけど/etc/pam.d/system-authの設定を戻していなかったのが敗因ですが、こういった問題を調べてちょこちょこ解決して使うのもなかなか楽しいものです。

Kali Linux NetHunter on Nexus 6P with LineageOS 17.1

 article  Comments Off on Kali Linux NetHunter on Nexus 6P with LineageOS 17.1
Aug 182020
 

Android 10のLineageOS 17.1がリリースされて久しいですが、我が?Nexus 6P (angler)用は公式にリリースされていません。

Kali Linux NetHunterのダウンロードページにはNexus 6P Los Tenが掲載されており、「Los TenってLineageOSのAndroid 10ってことだよなぁ…」と疑問に思っていたのですが、UNOFFICIALが出ていました。

[ROM][UNOFFICIAL] LineageOS 17.1 for Nexus 6P (angler)

こちらとOpen GApps、Magiskをadb sideloadで焼いてブート後、再度adb sideloadでNetHunterまでインストールすることができます。

ちなみにTWRPは最新の3.4.0ではなく、前述スレのコメント3に掲載されているFBE Recoveryを使わないと、/systemだったか/venderだったかのパーティションのマウントに失敗しインストールできませんでした。

kindで複数ワーカーノードのKubernetesクラスター構築

 article  Comments Off on kindで複数ワーカーノードのKubernetesクラスター構築
Aug 172020
 

先の記事でPodman環境のkindでcreate clusterを実施しましたが、コントロールプレーンノードのみで構成されており、クラスターぽくありません。

設定ファイルを用意してワーカーノードのロールを指定することで、ワーカーノードもコンテナーとして起動することができます。

設定ファイルはkindのリポジトリーに例がありますので、そちらをダウンロードします。

# curl -RO https://raw.githubusercontent.com/kubernetes-sigs/kind/master/site/content/docs/user/kind-example-config.yaml

ダウンロードした設定ファイルはワーカーノードが3個指定されています。そのままの設定でクラスターを作成してみます。

# export KIND_EXPERIMENTAL_PROVIDER=podman
# kind create cluster --config kind-example-config.yaml
enabling experimental podman provider
Creating cluster "kind" …
✓ Ensuring node image (kindest/node:v1.18.8) 🖼
✓ Preparing nodes 📦 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind" You can now use your cluster with:

kubectl cluster-info --context kind-kind

Thanks for using kind! 😊
#

kubectlやpodmanコマンドで確認するとworkerノードが3つ起動していることが確認できます。

# kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   83m   v1.18.2
kind-worker          Ready    <none>   82m   v1.18.2
kind-worker2         Ready    <none>   82m   v1.18.2
kind-worker3         Ready    <none>   82m   v1.18.2
# podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND  CREATED            STATUS                PORTS                      NAMES
05b58d328d89  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago  127.0.0.1:35181->6443/tcp  kind-control-plane
391ad6c545fa  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker2
42b8cad2dd06  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker
c8035f2f3cb5  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker3
# 

kind with Podman

 article  Comments Off on kind with Podman
Aug 172020
 

KubernetesにはDockerコンテナーをノードにしてクラスター構成をテストするためのkind(Kubernetes IN Docker)というプロジェクトがあります。

私はDockerではなくPodmanを使っているのですが、「podmanコマンドはdockerコマンドと互換なんだからいけんじゃね?」と安易に考えてPodmanでkindを試すと以下のissueに引っかかります(kind v0.8.1)。

[podman] kind 0.8.1 fails to download node image because podman is incompatible with image:tag@sha256 #1700

ちなみにArch Linuxにはkindという名前でaurパッケージが提供されていますが、こちらはdockerパッケージに依存するため、リポジトリからリリース版をダウンロードする方式で試しています。

issueに出ているworkaroundのKIND_EXPERIMENTAL_PROVIDER=podmanを指定してみると今度は別のエラーが。こちらもissueが出ています。

Cannot start with podman backend due to AppArmor errors #1757

どうやら最新版には修正が入っているようですので、最新版をgit cloneしてビルド、実行してみると無事動かすことができました!

$ git clone https://github.com/kubernetes-sigs/kind.git
$ cd kind
$ make build
$ sudo env KIND_EXPERIMENTAL_PROVIDER=podman ./bin/kind create cluster
using podman due to KIND_EXPERIMENTAL_PROVIDER
enabling experimental podman provider
Creating cluster "kind" …
✓ Ensuring node image (kindest/node:v1.18.8) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Thanks for using kind! 😊
$ sudo kubectl cluster-info --context kind-kind
Kubernetes master is running at https://127.0.0.1:46483
KubeDNS is running at https://127.0.0.1:46483/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$

これからいろいろKubernetesも試してみようと思います。

Rakuten UN-LIMITのSIMでLTE接続

 article  Comments Off on Rakuten UN-LIMITのSIMでLTE接続
Jul 292020
 

Rakuten UN-LIMITを契約しまして、ThinkPad T480s(Fibocom Wireless Inc. L850-GL)のArch Linuxで接続できましたのでご報告です。

ThinkPad T480sのArch LinuxでFibocom L-850GLモデムを使う方法は過去記事をご覧ください。

残念ながらSIMを挿してNetworkManagerでAPN設定するだけでうはうまくいかず、ModemManagerで調査していきます。

mmcliの結果では3Gのシグナルは掴んでいるようですが、レジスターができていない様子。

$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Fibocom Wireless Inc.] L850-GL
$ mmcli -m 0
((snip))
Status | unlock retries: sim-pin2 (3)
| state: enabled
| power state: on
| signal quality: 29% (cached)
((snip))
3GPP | imei: XXXXXXXXXXXXXXX
| enabled locks: fixed-dialing
| registration: idle

ちなみに接続できるIIJmioのSIMでは以下のように表示されていました。

  Status   |       unlock retries: sim-pin2 (3)
           |                state: registered
           |          power state: on
           |          access tech: lte
           |       signal quality: 19% (recent)
((snip))
  3GPP     |                 imei: XXXXXXXXXXXXXXX
           |        enabled locks: fixed-dialing
           |          operator id: 44010
           |        operator name: NTT DOCOMO
           |         registration: home

3GPPスキャンの結果はこんな感じで、電波自体は認識できているようでしたが、Rakuten UN-LIMITのMMC=440, MNC=11は出てきません。

$ mmcli -m 0 --3gpp-scan
---------------------
3GPP scan | networks: 44110 - 44110 (gprs, forbidden)
| 44051 - KDDI (gprs, forbidden)
| 44020 - SoftBank (gprs, forbidden)
| 44050 - KDDI (gprs, forbidden)
| 44010 - JP DOCOMO (gprs, forbidden)
| 44000 - 44000 (gprs, forbidden)
| 44010 - JP DOCOMO (gprs, forbidden)
| 44052 - 44052 (gprs, forbidden)
| 44100 - 44100 (gprs, forbidden)
| 44020 - SoftBank (gprs, forbidden)
| 44053 - 44053 (gprs, available)

ですので、3GPP Registerを実行してもエラーになります。

$ mmcli -m 0 --3gpp-register-home
error: couldn't register the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.MobileEquipment.GprsUnknown: Unsupported error (0): unknown'
$ mmcli -m 0 --3gpp-register-in-operator=44011
error: couldn't register the modem: 'Timeout was reached'

ふと3GPP scan結果で唯一availableになっていた44053に登録を試みたらどうなるでしょう。調べて見ると44053はKDDIの新しいPLMN番号(MCC+MNC)で、Rakuten向けのローミング回線らしいです。

$ mmcli -m 0 --3gpp-register-in-operator=44053
successfully registered the modem

おお。成功です。mmcliでのStatus、3GPP表示もいい感じになりました!

  Status   |       unlock retries: sim-pin2 (3)
           |                state: registered
           |          power state: on
           |          access tech: lte
           |       signal quality: 25% (recent)
((snip))
  3GPP     |                 imei: XXXXXXXXXXXXXXX
           |        enabled locks: fixed-dialing
           |          operator id: 44053
           |        operator name: Rakuten
           |         registration: home
((snip))

この状態でGSM用のNetworkManager設定を用意して接続すれば完了!
引き続きローミング時の切り替えを自動で実施する方法があるか調べようと思いますが、とりあえず接続できたので満足です。

Arch LinuxでWiFi接続不可

 article  Comments Off on Arch LinuxでWiFi接続不可
Feb 112020
 

Arch Linuxで突如WiFiに接続できなくなりまして、ジャーナルを見ていたら以下のようなログが。

[   25.669989] ------------[ cut here ]------------
[   25.670056] WARNING: CPU: 4 PID: 1026 at net/wireless/nl80211.c:7035 nl80211_get_reg_do+0x228/0x290 [cfg80211]
[   25.670059] Modules linked in: sd_mod snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic x86_pkg_temp_thermal joydev intel_powerclamp mousedev coretemp kvm_intel uvcvideo videobuf2_vmalloc elan_i2c videobuf2_memops kvm vide
obuf2_v4l2 i915 iTCO_wdt btusb iTCO_vendor_support iwlmvm videobuf2_common snd_hda_intel btrtl btbcm mei_hdcp intel_rapl_msr irqbypass crct10dif_pclmul crc32_pclmul videodev btintel snd_intel_dspcfg mac80211 bluetooth wmi_bmof mc snd_hda_
codec ghash_clmulni_intel intel_wmi_thunderbolt uas usb_storage aesni_intel libarc4 scsi_mod ecdh_generic crypto_simd ecc cryptd i2c_algo_bit snd_hda_core iwlwifi nls_iso8859_1 glue_helper nls_cp437 snd_hwdep intel_cstate vfat drm_kms_hel
per fat snd_pcm intel_uncore intel_rapl_perf psmouse input_leds cfg80211 pcspkr e1000e drm i2c_i801 snd_timer intel_gtt agpgart mei_me thunderbolt nxp_nci_i2c intel_xhci_usb_role_switch syscopyarea mei intel_lpss_pci processor_thermal_dev
ice nxp_nci roles sysfillrect intel_lpss nci
[   25.670124]  intel_rapl_common sysimgblt idma64 ucsi_acpi fb_sys_fops intel_pch_thermal intel_soc_dts_iosf typec_ucsi typec tpm_crb nfc wmi thinkpad_acpi nvram ledtrig_audio rfkill snd tpm_tis tpm_tis_core int3403_thermal battery sound
core int340x_thermal_zone ac tpm int3400_thermal evdev acpi_thermal_rel rng_core mac_hid pkcs8_key_parser crypto_user ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 serio_raw atkbd libps2 xhci_pci crc32c_intel xhci_hcd i8042 se
rio
[   25.670170] CPU: 4 PID: 1026 Comm: wpa_supplicant Tainted: G        W         5.5.2-arch1-1 #1
[   25.670172] Hardware name: LENOVO 20L7CTO1WW/20L7CTO1WW, BIOS N22ET60W (1.37 ) 11/25/2019
[   25.670214] RIP: 0010:nl80211_get_reg_do+0x228/0x290 [cfg80211]
[   25.670219] Code: 89 ef c7 44 24 0c 01 00 00 00 e8 d3 d2 91 c5 85 c0 74 cc e9 ff fe ff ff 48 89 ef 48 89 04 24 e8 4e 3e be c5 48 8b 04 24 eb 89 <0f> 0b 48 89 ef e8 3e 3e be c5 b8 ea ff ff ff e9 75 ff ff ff b8 97
[   25.670222] RSP: 0018:ffffa63480ebba60 EFLAGS: 00010202
[   25.670226] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000
[   25.670228] RDX: ffff8ecc14168008 RSI: 0000000000000000 RDI: ffff8ecc14168300
[   25.670230] RBP: ffff8ecc126c8400 R08: 0000000000000004 R09: ffff8ecc1219c014
[   25.670232] R10: 000000000000001e R11: ffffa63480ebbb20 R12: ffffa63480ebbb20
[   25.670234] R13: ffff8ecc1219c014 R14: 0000000000000000 R15: ffff8ecc14168300
[   25.670238] FS:  00007fd9d44f97c0(0000) GS:ffff8ecc1a700000(0000) knlGS:0000000000000000
[   25.670240] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   25.670243] CR2: 000055b3aed81018 CR3: 0000000630858001 CR4: 00000000003606e0
[   25.670245] Call Trace:
[   25.670267]  genl_rcv_msg+0x1d2/0x480
[   25.670276]  ? __alloc_skb+0x87/0x1d0
[   25.670282]  ? kmalloc_large_node+0x84/0x90
[   25.670289]  ? genl_family_rcv_msg_attrs_parse+0x100/0x100
[   25.670293]  netlink_rcv_skb+0x75/0x140
[   25.670299]  genl_rcv+0x24/0x40
[   25.670304]  netlink_unicast+0x199/0x240
[   25.670309]  netlink_sendmsg+0x243/0x480
[   25.670316]  sock_sendmsg+0x5e/0x60
[   25.670321]  ____sys_sendmsg+0x21b/0x290
[   25.670326]  ? copy_msghdr_from_user+0xe1/0x160
[   25.670333]  ___sys_sendmsg+0x9e/0xe0
[   25.670346]  __sys_sendmsg+0x81/0xd0
[   25.670357]  do_syscall_64+0x4e/0x150
[   25.670365]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   25.670370] RIP: 0033:0x7fd9d485f7b7
[   25.670374] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
[   25.670377] RSP: 002b:00007ffc2b9fa148 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[   25.670380] RAX: ffffffffffffffda RBX: 000055b3aed4d620 RCX: 00007fd9d485f7b7
[   25.670382] RDX: 0000000000000000 RSI: 00007ffc2b9fa180 RDI: 0000000000000004
[   25.670385] RBP: 000055b3aed4d530 R08: 0000000000000004 R09: 000055b3aed4a010
[   25.670387] R10: 00007ffc2b9fa254 R11: 0000000000000246 R12: 000055b3aed7c9d0
[   25.670389] R13: 00007ffc2b9fa180 R14: 00007ffc2b9fa254 R15: 000055b3aed7e130
[   25.670397] ---[ end trace a3d3dd4cae3c209a ]---

wpa_supplicant起動時に発生しているようで、ものは試しにとiwdを使ってみましたが、同じようにエラーになります。いろいろ調べた結果 FS#65041 – Unable to associate with WiFi wireless network with kernel 5.4.7-arch1-1 と同じ症状のようで、rfkillでwlanをunblockedにしたら接続できるようになりました。

$ sudo rfkill unblock wlan

ちなみにrfkillコマンドはutil-linuxパッケージで提供されているのですが、こちらのパッケージではrfkill unblock用のsystemdサービスも用意されていて、以下のとおり有効化することで毎回起動時にunblockされるようになります。

$ sudo systemctl enable rfkill-unblock@wlan.service

PVの特定位置にLVを作成する

 article  Comments Off on PVの特定位置にLVを作成する
Feb 012020
 

LVMでLogical Volume(LV)をアロケーションする際、Phisical Volume(PV)のPhisical Extent(PE)の位置を指定することができます。

Volume Group(VG)を構成する特定PVの最後のほうにLVをアロケーションすることも可能ということです。

現在のPE割り当て状態はpvdisplayの-m(マップ)オプションで確認することができます。

$ sudo pvdisplay -m /dev/nvme0n1p2
--- Physical volume ---
   PV Name               /dev/nvme0n1p2
   VG Name               vg_data
   PV Size               444.09 GiB / not usable 3.00 MiB
   Allocatable           yes 
   PE Size               4.00 MiB
   Total PE              113687
   Free PE               17431
   Allocated PE          96256
   PV UUID               vu3SHx-qCaA-MN48-NXZT-yH1A-uA3t-rc0UcO

--- Physical Segments ---
   Physical extent 0 to 65535:
     Logical volume    /dev/vg_data/lv_root
     Logical extents    0 to 65535
  Physical extent 65536 to 113686:
     FREE

$

上によるとPEの65536から113686まで空いていることになります。

LV作成時にPVの最後にPE開始位置と終了位置を設定することで特定の場所に作成することができるようになります。

上記PV空き領域の中の末尾に40GiBのLVを作成する場合は、以下のように指定することになります。Extent開始位置は末尾から逆算して算出します。

$ sudo lvcreate -L40G -n lv_test vg_data /dev/nvme0n1p2:103447-113686
  Logical volume "lv_test" created.
$

作成できました。pvdisplayで確認すると、PEの途中にFREEの領域があり末尾にアロケーションされていることがわかります。

$ sudo pvdisplay -m /dev/nvme0n1p2
  --- Physical volume ---
  PV Name               /dev/nvme0n1p2
  VG Name               vg_data
  PV Size               444.09 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              113687
  Free PE               37911
  Allocated PE          75776
  PV UUID               vu3SHx-qCaA-MN48-NXZT-yH1A-uA3t-rc0UcO
   
  --- Physical Segments ---
  Physical extent 0 to 65535:
    Logical volume	/dev/vg_data/lv_root
    Logical extents	0 to 65535
  Physical extent 65536 to 103446:
    FREE
  Physical extent 103447 to 113686:
    Logical volume	/dev/vg_data/lv_test
    Logical extents	0 to 10239
   
$
 Posted by at 1:11 am  Tagged with:

nftables環境でlibvirtを使うときはebtablesではなくiptables-nftを入れればよかった

 article  Comments Off on nftables環境でlibvirtを使うときはebtablesではなくiptables-nftを入れればよかった
Feb 012020
 

Arch LinuxでVirtualBoxからlibvirtへの切り替えを試みています。

Arch Linuxのlibvirtに関するWikiページを見ていると、libvirtでdefaultのNATテーブルを使う場合はebtablesとdnsmasqを入れるようにとの記載があります。

私はiptablesではなくnftablesに切り替えてしまったので、ebtablesを入れても効かないんではなかろうかと思いつつ調べましたら、nftables環境でiptablesやebtablesコマンドを使えるようにするiptables-nftというパッケージがあることを発見したので、そちらを導入して解決。

ちなみにnftables環境でもiptablesパッケージを使うことはできるのですが、こちらのiptablesコマンドではnftablesでの設定内容は表示されません。iptables-nftパッケージのiptablesコマンドであれば、nftablesで設定した内容も表示することができます。

Kali Linux NetHunter on Nexus 6P with LineageOS 15

 article  Comments Off on Kali Linux NetHunter on Nexus 6P with LineageOS 15
Jan 232020
 

Androidで動作するペネトレーションテスト環境のKali Linux NetHunterは、Nexus 6P (angler)用ですとNougat (Android 7.1)しか公式にサポートしていません。

最初はLineageOS 14 (Nougat)の環境に導入して使っていたのですが、SnoopSnitchでのパッチレベルを見るたびに悲しくなるので、LineageOS 15 (Oreo)の環境に導入しなおしました。

公式にはサポートされていませんが、公開されているビルドスクリプトではOreoやPieも対象に含まれていますので、自力でビルドすればOreo環境にも導入可能です。

以下、自前でビルドして導入した際の覚書。手順は以下に掲載されているものそのままですが、 当方は文鎮化も覚悟したうえで実施していますのでご容赦の程を。
Building NetHunter | Kali Linux Documentation

gitリポジトリーをcloneします。

$ git clone https://gitlab.com/kalilinux/nethunter/build-scripts/kali-nethunter-project.git

bootstrapを実行します。

$ cd kali-nethunter-project/nethunter-installer
$ ./bootstrap.sh

buildします。私のArch Linux環境ではpython2-requestsパッケージの導入が必要でした。

$ sudo pacman -S python2-requests
$ python2 build.py -d angler-los -o -fs full

指定できるデバイスやAndroidバージョンは-hオプションで確認できます。

あとは出来上がったファイルをTWRPからインストールして完了。