pondělí 16. dubna 2018

Wireshark dekódování HTTPS

HTTPS je v podstatě HTTP protokol zabalený či šifrovaný pomocí SSL nebo TLS. Pro Wireshark bude tedy potřeba získat klíče, který byly použity při tomto šifrovaném spojení. Toto je možné jednoduše realizovat přidáním do prostředí systému proměnné SSLKEYLOGFILE s odkazem na umístění příslušného souboru.



A nyní nám již systém klíče ukládá do souboru E:\Halda\key.txt, obsah vypadá nějak takto:


Soubor tedy předhodíme Wiresharku, v nastavení vybereme protokol SSL


A máme výsledek, úplně stejné jako při normálním HTTP



středa 11. dubna 2018

USB Blaster + OpenOCD a STM32





root@Jenda:/usr/local/share/openocd# openocd -f interface/altera-usb-blaster.cfg  \
> -c "transport select jtag"  \
> -f target/stm32f3x.cfg
Open On-Chip Debugger 0.10.0+dev-00362-g78a44055 (2018-03-27-17:48)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
Warn : Adapter driver 'usb_blaster' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
Warn : Transport "jtag" was already selected
jtag
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : usb blaster interface using libftdi
Info : This adapter doesn't support configurable speed
Info : JTAG tap: stm32f3x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f3x.bs tap/device found: 0x06422041 (mfg: 0x020 (STMicroelectronics), part: 0x6422, ver: 0x0)
Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections
Info : accepting 'telnet' connection on tcp/4444
Error: Translation from khz to jtag_speed not implemented
in procedure 'reset' 
in procedure 'ocd_bouncer' 
in procedure 'ocd_process_reset' 
in procedure 'ocd_process_reset_inner' called at file "embedded:startup.tcl", line 248
in procedure 'stm32f3x.cpu' called at file "embedded:startup.tcl", line 286
in procedure 'ocd_bouncer'

Info : JTAG tap: stm32f3x.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : JTAG tap: stm32f3x.bs tap/device found: 0x06422041 (mfg: 0x020 (STMicroelectronics), part: 0x6422, ver: 0x0)
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x0800045c msp: 0x20000408
===== arm v7m registers
(0) r0 (/32): 0x00000000
(1) r1 (/32): 0x00000000
(2) r2 (/32): 0x00000000
(3) r3 (/32): 0x00000000
(4) r4 (/32): 0x00000000
(5) r5 (/32): 0x00000000
(6) r6 (/32): 0x00000000
(7) r7 (/32): 0x00000000
(8) r8 (/32): 0x00000000
(9) r9 (/32): 0x00000000
(10) r10 (/32): 0x00000000
(11) r11 (/32): 0x00000000
(12) r12 (/32): 0x00000000
(13) sp (/32): 0x20000408
(14) lr (/32): 0xFFFFFFFF
(15) pc (/32): 0x0800045C
(16) xPSR (/32): 0x01000000
(17) msp (/32): 0x20000408
(18) psp (/32): 0x00000000
(19) primask (/1): 0x00
(20) basepri (/8): 0x00
(21) faultmask (/1): 0x00
(22) control (/2): 0x00
(23) d0 (/64): 0x0000000000000000
(24) d1 (/64): 0x0000000000000000
(25) d2 (/64): 0x0000000000000000
(26) d3 (/64): 0x0000000000000000
(27) d4 (/64): 0x0000000000000000
(28) d5 (/64): 0x0000000000000000
(29) d6 (/64): 0x0000000000000000
(30) d7 (/64): 0x0000000000000000
(31) d8 (/64): 0x0000000000000000
(32) d9 (/64): 0x0000000000000000
(33) d10 (/64): 0x0000000000000000
(34) d11 (/64): 0x0000000000000000
(35) d12 (/64): 0x0000000000000000
(36) d13 (/64): 0x0000000000000000
(37) d14 (/64): 0x0000000000000000
(38) d15 (/64): 0x0000000000000000
(39) fpscr (/32): 0x00000000
===== Cortex-M DWT registers
(40) dwt_ctrl (/32)
(41) dwt_cyccnt (/32)
(42) dwt_0_comp (/32)
(43) dwt_0_mask (/4)
(44) dwt_0_function (/32)
(45) dwt_1_comp (/32)
(46) dwt_1_mask (/4)
(47) dwt_1_function (/32)
(48) dwt_2_comp (/32)
(49) dwt_2_mask (/4)
(50) dwt_2_function (/32)
(51) dwt_3_comp (/32)
(52) dwt_3_mask (/4)
(53) dwt_3_function (/32)
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_usb_blstr.pdf

neděle 25. března 2018

Reverzní inženýrství

Začalo to pokusem zprovoznit JTAG pod OpenOCD. S ASIX Presto jsem si s touto kombinací vylámal zuby už dávno ale s RaspberryPi 3 by to mohlo jít.

Nejprve je nutné OpenOCD pro RaspberryPi stáhnout a přeložit (tak například takto):

git clone git://git.code.sf.net/p/openocd/code openocd-code

Dále je potřeba v konfiguraci povolit veškeré požadované rozhraní (hlavně --enable-sysfsgpio --enable-bcm2835gpio ale FTDIčko také není na závadu)

./bootstrap
./configure

A potom už jen make a nainstalovat,

make
sudo make install

všechny potřebné skripty pro jeho používání nalezneme v /usr/local/share/openocd/scripts/

Nyní již stačí správně propojit drátky, kdo má drátků málo, tak použije SWD (SWDIO, SWDCLK, GND) kdo má drátků hodně nebo tak akorát může použít JTAG (TCK, TMS, TDI, TDO, TRST, SRST).

Pro RaspberryPi 3 jsem použil soubor s konfigurací raspberrypi2-native.cfg, zde je možné zvolit zda JTAG nebo SWD.

Po drobném laborování jsem si udělal upravil soubor raspberrypi2.cfg, tak aby bylo možné použít jedno nebo druhé se stejným zapojením:

#
# Config for using Raspberry Pi's expansion header
#
# This is best used with a fast enough buffer but also
# is suitable for direct connection if the target voltage
# matches RPi's 3.3V and the cable is short enough.
#
# Do not forget the GND connection, pin 6 of the expansion header.
#

interface bcm2835gpio

#RPi2 & RPi3
bcm2835gpio_peripheral_base 0x3F000000
#RPi1
#bcm2835gpio_peripheral_base 0x20000000

# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET
# These depend on system clock, calibrated for stock 700MHz
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET
#RPi2 & RPi3
bcm2835gpio_speed_coeffs 146203 36
#RPi1
#bcm2835gpio_speed_coeffs 113714 28

# Each of the JTAG lines need a gpio number set: tck tms tdi tdo
# Header pin numbers: 23 22 19 21
bcm2835gpio_jtag_nums 11 25 10 9

# or if you have both connected,
# reset_config trst_and_srst srst_push_pull

# Each of the SWD lines need a gpio number set: swclk swdio
# Header pin numbers: 23 22
bcm2835gpio_swd_nums 11 25

# If you define trst or srst, use appropriate reset_config
# Header pin numbers: TRST - 26, SRST - 18

bcm2835gpio_trst_num 7
# reset_config trst_only

bcm2835gpio_srst_num 18
#reset_config srst_only srst_push_pull

# or if you have both connected,
reset_config trst_and_srst srst_push_pull

OpenOCD spustíme příkazem (pozor na pořadí parametrů):

sudo openocd -f interface/raspberrypi2-native.cfg -c "transport select swd" -f target/stm32f3x.cfg
nebo
sudo openocd -f interface/raspberrypi2-native.cfg -c "transport select jtag" -f target/stm32f3x.cfg

A už nám OpenOCD pěkně čeká na spojení (pozor na Discavery Boardech je třeba odpojit piny STLinku a někdy i tahá za další, takže odpojení a připojení napájení destičky vždy pomohlo).


Po připojení většinou procesor běží, je nutné ho zastavit příkazem:
reset halt

a nyní již můžeme vyčíst registry:


Dále si můžeme nechat zobrazit paměť (šuf obsah FLASH).


Dále se zeptáme na paměťové banky - ověříme si, že FLASH je zde namapována od adresy 0x08000000


A stáhneme si obsah flash paměti





a když už máme FW, tak co se takhle do něho podívat? Využil jsem to jako první seznámení s radare2:

ToDo:

pohrát si s binwalk, nejlépe si vyčíst FW z OpenWRT routeru.
https://www.youtube.com/watch?v=GIU4yJn2-2A
https://www.youtube.com/watch?v=8dXhrOEGHTY
https://www.youtube.com/watch?v=oXSx0Qo2Upk

Jinak OpenOCD bylo nutné přeložit, pro Presto je potřeba ještě přeložit také knihovnu libftdi a potom už svatá trojka.

nebo libftdi je možné nainstalovat sudo apt-get install libusb-1.0 libusb-dev a změnit --prefix na "--prefix=/usr/"

./configure \
--enable-ftdi \
--enable-stlink \
--enable-ti-icdi \
--enable-ulink \
--enable-dummy \
--enable-usb-blaster-2 \
--enable-jlink \
--enable-osbdm \
--enable-opendous \
--enable-aice \
--enable-vsllink \
--enable-usbprog \
--enable-rlink \
--enable-armjtagew \
--enable-parport \
--enable-jtag_vpi \
--enable-usb_blaster_libftdi \
--enable-amtjtagaccel \
--enable-gw16012 \
--enable-ep93xx \
--enable-presto_libftdi \
--enable-openjtag_ftdi \
--enable-buspirate \
--enable-sysfsgpio \
--enable-arm-jtag-ew \
--enable-bcm2835gpio \
--enable-at91rm9200 \
--enable-ft2232_libftdi \
--enable-parport-ppdev \
--enable-parport-giveio \
--enable-remote-bitbang \
--prefix=/home/pi/libftdi1-1.4/libftdi1-1.4/
make
make install

https://pinout.xyz/

neděle 17. září 2017

Spotřeba

Po téměř roce jsem se s 1,4 TSI (110 kW) docela skmarádil a podařilo se zatím dosáhnout rekordně nízké spotřeby 3,7 l/100 km! Díky tomu se dokáži ze Dvora Králové do Boleslavi přepravovat levněji než autobusem (spotřebováno 2,9 l při současné ceně benzínu cca 29,9 Kč/l => 87 Kč, cena autobusem je 108 Kč a to se vyplatí). :-) Pro srovnání přikládám i spotřebu, když se jede po volné Německé dálnici téměř na limitu možností auta ale stejně spotřeba do 10 l/100 km není tak špatná vezmeme v úvahu skutečnost, jaký byla maximální i průměrná rychlost.




sobota 25. února 2017

OpenWRT na Nanostation5

Nastavení RedBootu:

RedBoot> fconfig -l
Run script at boot: true
Boot script:
.. cache off
.. fis load -d -e kernel
.. exec

Boot script timeout (1000ms resolution): 10
Use BOOTP for network configuration: false
Gateway IP address: 192.168.1.1
Local IP address: 192.168.1.20
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.1
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false

Výpis jádra:

+Ethernet eth1: MAC address 00:xx:xx:xx:xx:xx
IP: 192.168.1.20/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.1

RedBoot(tm) bootstrap and debug environment [ROM]
Ubiquiti Networks certified release, version 0.9.8.06 - built 10:58:52, Dec 23 2008

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: Ubiquiti AR2313 based board
RAM: 0x80000400-0x80ff0400, [0x80000400-0x80fd1400] available
FLASH: 0xbe000000 - 0xbe3f0000, 64 blocks of 0x00010000 bytes each.
== Executing boot script in 10.000 seconds - enter ^C to abort

== Executing boot script in 10.000 seconds - enter ^C to abort
RedBoot> cache off
RedBoot> fis load -d -e kernel
Trying LZMA decompression...
Image loaded from 0x80041000-0x8034964c
Image is not ELF, skipping ELF parsing...
RedBoot> exec
Now booting linux kernel:
 Base address 0x80030000 Entry 0x80041000
 Cmdline :
[    0.000000] Linux version 3.18.23 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47269) ) #1 Mon Feb 1 09:22:59 CET 2016
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001800a (MIPS 4Kc)
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 01000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x00ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x00ffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x00ffffff]
[    0.000000] Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
[    0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 16 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
[    0.000000] Kernel command line:  console=ttyS0,9600 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 64 (order: -4, 256 bytes)
[    0.000000] Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Memory: 12592K/16384K available (2566K kernel code, 102K rwdata, 300K rodata, 156K init, 193K bss, 3792K reserved)
[    0.000000] NR_IRQS:128
[    0.000000] Calibrating delay loop... 179.60 BogoMIPS (lpj=898048)
[    0.100000] pid_max: default: 32768 minimum: 301
[    0.110000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.120000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.150000] NET: Registered protocol family 16
[    0.190000] Switched to clocksource MIPS
[    0.240000] NET: Registered protocol family 2
[    0.300000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.380000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.460000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.530000] TCP: reno registered
[    0.570000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.640000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.720000] NET: Registered protocol family 1
[    0.770000] Radio config found at offset 0x2000 (0x100)
[    0.840000] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.940000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.010000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    1.200000] msgmni has been set to 24
[    1.240000] io scheduler noop registered
[    1.290000] io scheduler deadline registered (default)
[    1.350000] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    1.450000] serial8250: ttyS0 at MMIO 0x1c000000 (irq = 9, base_baud = 2812500) is a 16550A
[    1.550000] console [ttyS0] enabled
[    1.550000] console [ttyS0] enabled
[    1.630000] bootconsole [early0] disabled
[    1.630000] bootconsole [early0] disabled
[    1.750000] physmap platform flash device: 00800000 at 1e000000
[    1.820000] physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank. Manufacturer ID 0x0000c2 Chip ID 0x0000a7
[    1.940000] Amd/Fujitsu Extended Query Table at 0x0040
[    2.010000]   Amd/Fujitsu Extended Query version 1.1.
[    2.070000] physmap-flash.0: Swapping erase regions for top-boot CFI table.
[    2.150000] number of CFI chips: 1
[    2.220000] Searching for RedBoot partition table in physmap-flash.0 at offset 0x3d0000
[    2.340000] Searching for RedBoot partition table in physmap-flash.0 at offset 0x3e0000
[    2.460000] 6 RedBoot partitions found on MTD device physmap-flash.0
[    2.530000] Creating 6 MTD partitions on "physmap-flash.0":
[    2.600000] 0x000000000000-0x000000030000 : "RedBoot"
[    2.670000] 0x000000030000-0x000000140000 : "kernel"
[    2.730000] 0x000000140000-0x0000003e0000 : "rootfs"
[    2.800000] mtd: device 2 (rootfs) set to be root filesystem
[    2.870000] 1 squashfs-split partitions found on MTD device rootfs
[    2.940000] 0x000000370000-0x0000003e0000 : "rootfs_data"
[    3.010000] 0x0000003e0000-0x0000003ef000 : "FIS directory"
[    3.080000] 0x0000003ef000-0x0000003f0000 : "RedBoot config"
[    3.160000] 0x0000003f0000-0x000000400000 : "boardconfig"
[    3.300000] eth0: Atheros AR231x: 00:15:6d:b6:bd:14, irq 4
[    3.480000] libphy: ar231x_eth_mii: probed
[    3.530000] eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=1:01)
[    3.620000] TCP: cubic registered
[    3.660000] NET: Registered protocol family 17
[    3.710000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    3.860000] Bridge firewalling registered
[    3.910000] 8021q: 802.1Q VLAN Support v1.8
[    4.000000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
[    4.090000] Freeing unused kernel memory: 156K (80329000 - 80350000)
[    7.070000] init: Console is alive
[   11.320000] init: - preinit -
[   12.080000] random: mktemp urandom read with 15 bits of entropy available
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[   15.840000] mount_root: jffs2 not ready yet, using temporary tmpfs overlay
[   15.990000] procd: - early -
[   17.290000] procd: - ubus -
[   18.370000] procd: - init -
Please press Enter to activate this console.
[   22.740000] NET: Registered protocol family 10
[   22.820000] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   22.940000] Loading modules backported from Linux version master-2015-03-09-0-g141f155
[   23.040000] Backport generated by backports.git backports-20150129-0-gdd4a670
[   23.140000] ip_tables: (C) 2000-2006 Netfilter Core Team
[   23.240000] nf_conntrack version 0.5.0 (199 buckets, 796 max)
[   23.480000] xt_time: kernel timezone is -0000
[   23.610000] cfg80211: Calling CRDA to update world regulatory domain
[   23.810000] cfg80211: World regulatory domain updated:
[   23.870000] cfg80211:  DFS Master region: unset
[   23.920000] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[   24.040000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[   24.130000] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz, 92000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[   24.250000] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[   24.340000] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[   24.460000] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[   24.570000] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
[   24.670000] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[   24.760000] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[   25.430000] PPP generic driver version 2.4.2
[   25.490000] NET: Registered protocol family 24
[   25.630000] ath5k: phy0: Atheros AR2313 chip found (MAC: 0x58, PHY: 0x44)
[   25.710000] ath5k: phy0: RF5112B 5GHz radio found (0x36)
[   25.780000] cfg80211: Calling CRDA for country: US
[   25.900000] cfg80211: Regulatory domain changed to country: US
[   25.970000] cfg80211:  DFS Master region: FCC
[   26.020000] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[   26.130000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 3000 mBm), (N/A)
[   26.230000] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2300 mBm), (N/A)
[   26.340000] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2300 mBm), (0 s)
[   26.460000] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2300 mBm), (0 s)
[   26.560000] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 3000 mBm), (N/A)
[   26.650000] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
[   53.350000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[   53.620000] jffs2_build_filesystem(): unlocking the mtd device... done.
[   53.700000] jffs2_build_filesystem(): erasing all blocks after the end marker... done.
[   58.480000] jffs2: notice: (740) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   63.990000] device eth0 entered promiscuous mode
[   64.230000] br-lan: port 1(eth0) entered forwarding state
[   64.300000] br-lan: port 1(eth0) entered forwarding state
[   66.300000] br-lan: port 1(eth0) entered forwarding state
[   86.900000] random: nonblocking pool is initialized



BusyBox v1.23.2 (2016-01-02 21:20:31 CET) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05.1, r48532)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/#


pondělí 9. ledna 2017

Sniffování HTTPS

Od minulého článku jsme už pokročili, nyní máme zachycen síťový provoz na WiFi síti. Dokonce se můžeme dívat do přenášených dat, bohužel pokud daný přenos používá protokol https, tak máme opět smůlu. Pro jeho rozšifrování je třeba ještě získat klíče použité pro dané SSL spojení. Což nám velice usnadnili například vývojáři Firefoxu či Chrome, stačí definovat klíč s názvem "SSLKEYLOGFILE" a hodnota představuje název souboru, do kterého prohlížeče klíče mají ukládat. V Linuxu stačí použít export SSLKEYLOGFILE=/sslkey.log a ve Windows vytvořit novou uživatelskou proměnnou.




Prohlížeč nám bude klíče ukládat v následujícím formátu do souboru ssl.log. Ten již stačí předhodit Wiresharku a komunikace bude možné rozšifrovat i na další vrstvě.


A samotné přidání souboru do Wiresharku.


A máme výsledek, uživatelské jméno je: ..... a heslo je: ........





https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/

sobota 12. listopadu 2016

Sniffování provozu na šifrované WiFi

Jistě se Vám už stalo, že jste měli nějaké IoT zařízení s neznámým protokolem, obyčejnému uživateli to může stačit. Ale hračička si říká, jaká data se mimo jiné z mého zařízení odesílají a co by se s nimi dalo dělat. Nebo proč si rovnou neudělat sběrný portál sám a třeba lépe ... Máme tedy zařízení, které se připojuje do sítě, ke které známe šifrovací klíč a pouze Androidovskou aplikaci pro ovládání, jak tedy zkoumat komunikaci z dalšího počítače? Ještě, že existuje promiskuitní režim ovladačů WiFi karet, stačí jen spustit Linuxové LiveCD (LiveUSB), v našem případě Kali Linux, a postupovat podle dále popsaného návodu (založeného na překladu článku, viz zdroj).

Pustíme příkazový řádek a zadáme příkaz iwconfig, ten nám zobrazí všechna dostupná rozhraní, v našem případě nás zajímá wlan0 a vůbec nám nevadí, že není připojeno k žádné wifi síti (ba naopak).


 Dále pustíme airmon, příkazem airmon-ng start wlan0, to se nám patrně na poprvé nepodaří, nejprve je nutné killnout procesy, které nám wlan0 blokují pro sebe.



V tomto případě stačí zadat kill [PID_procesu], tedy kill 3004 atd.



A nyní už máme rozhraní jen sami pro sebe, pustíme si tedy monitor. airmon-ng stop mon0


A nyní si můžeme v příkazové řádce dumpnout komunikaci nebo si ji rovnou zobrazovat ve WireSharku. Pro nahrávání využívám airodump-ng mon0 --channel [číslo_wifi_kanálu] -w log.pcap, kde mon0 definuje rozhraní na kterém airodump naslouchá, channel definuje kanál wifi a přepínačem w říkáme, kam nasniffovaná data ukládat.
Další možností je otevřít rozhraní mon0 ve WireSharku, je potřeba zkonrolovat, zda máme zapnutou volby promiscuous a monitor mode.
Při výchozím nastavení se nám budou ve WireSharku zobrazovat jen 802.11 rámce, což je logické, protože WireShark pro jejich rozšifrování nemá klíč (viz obrázek z příkladu).


Na stránkách dokumentace k WireSharku (druhý odkaz) je možné stáhnout příklad, tedy nasniffovanou komunikaci sítě s názvem SSID  Coherer a heslem Induction. Pro rozšifrování musíme do nastavení Edit -> Preferences... a v záložce Protocols vybereme IEEE 802.11. Zde stačí povolit dešifrování (Enable decryption) a zadat šifrovací klíč.


A nyní už máme komunikaci, tak jako bychom ji poslouchali přímo na Ethernetu.



https://documentation.meraki.com/MR/Monitoring_and_Reporting/Capturing_Wireless_Traffic_from_a_Client_Machine
https://wiki.wireshark.org/HowToDecrypt802.11