Ahhoz, hogy a Siemens S7 protokollját vizsgálni tudjuk, szükséges alkalmazni valamilyen programot, amellyel különböző parancsok állíthatók elő. Mi is írhatnánk egyet akár Python-ban a Scapy használatával, de ehhez ismerni kell mélységeiben az S7 kommunikációs protokollt.
Használjunk ezért valamilyen alkalmazást, szerencsére több ilyen is megtalálható az Interneten.
Az első ingyenesen használható programot a "plccom.de" oldaláról lehet regisztráció után letölteni, és 30 napig használható. A regisztráció és a letöltés a következő linken lehetséges.
https://www.plccom.de/en/plccom/for-s7/fors7-download/
A letöltés után nem szükséges a Visual Studio használata, mert a letöltött file-okban megtalálható a "tryMe" könyvtár, ahol a program futtatható változata is elérhető (1. ábra).
1. ábra A "tryMe" könyvtár tartalma
Indítsuk el a "PLCCom_Example_CShartp.exe" programot, ahol az első indítás után meg kell adni a regisztrációnál megadott nick nevet, illetve az emailben megkapott Serial Numbert.
Ezután meg kell adni a PLC típusát, illetve az IP címét, majd tudunk kapcsolódni a (virtuális) PLC-hez (2. ábra).
2. ábra PLCCom alkalmazás felülete
A másik lehetőség az, hogy letöltjük a következő linkről a "sharp7-full-1.0.0.7z" file-t.
https://sourceforge.net/projects/snap7/files/Sharp7/
Csomagoljuk ki a letöltött file-t, és indítsuk el a Visual Studio-t, és töltsük be a letöltött és kicsomagolt projektet ("WinClient"), amelynek a felépítése látható a Solution Explorerben (3. ábra).
3. ábra A "WinClient" projekt felépítése
Indítsuk el debug módban az alkalmazást, ha a projekt által használt .NET Framework nem található meg a számítógépünkön, akkor update-eljük a fordítás során a projektet (4. ábra).
4. ábra A letöltött projekt 4.8 .NET keretkörnyezetbe történő update-elése
Egyébként megtalálhatók a telepített keretkörnyezet verziók a Visual Studio Application ablakában (5. ábra).
5. ábra Egyéb keretkörnyezetek
Ebben a letöltött file-ban az "Examples" alkönyvtárban négy lehetőség található, mi most a "WinForm" projektet fordítjuk le. Ebben a projektben található a "MainForm" osztály, amelynek a konstruktora a 6. ábrán látható. A 34. sorban található az "S7Client" osztály példányosítása. Látható a konstruktor tartalmából, hogy a számunkra lényeges rész az "S7Client" osztályban van. Álljunk rá erre a névre, és nyomjuk meg az F12 funkciógombot.
6. ábra A MainForm osztály konstruktora
Az F12 funkciógomb megnyomása után az "S7Client" osztály elejére kerül a nézet, és itt különböző konstansokat, metódusokat találunk (7. ábra).
7. ábra Az S7Client osztály tartalma
Példaként nézzük meg az "S7 Telegrams" csoport tartalmát. Itt találjuk meg a PLC hidegindításához szükséges konstansokat, illetve a PLC állapotának a lekérdezéséhez szükséges tömb tartalmát is. (Ha a kedves Olvasó szeretné megismerni "bitszinten" a Siemens PLC-ket, akkor ez az osztály nagyon sokat tud ebben segíteni.)
8. ábra Az "S7 Telegrams" részlete
Szintén itt található például a TPKT fejlécének a felépítése is. Tehát ez a projekt arra is alkalmas, hogy megtanuljuk azt, hogy C# nyelven hogyan lehet felépíteni egy hálózati csomagot. Persze, jóval bonyolultabb, mintha Python-t alkalmaznánk a Scapy könyvtárral.
9. ábra A TPKT fejlés előállítása C# nyelven
Végül nézzünk meg egy metódust, amely szintén az 'S7Client" osztályban található meg. A "GetCpuInfo()" metódus meghívása után kapható meg az adott PLC sorozatszáma, modulneve, stb. A metódus legelején az "S7SZL" osztály példányosítása látható (10. ábra). Ennek az osztálynak a megismerése szintén nagyon érdekes lehet, de ez meghaladja most ennek a cikknek a kereteit.
10. ábra A "GetCpuInfo()" metódus felépítése
A letöltött és lefordított program már alkalmas arra, hogy a (virtuális) PLC vizsgálata elkezdődhessen. Ennek a vizsgálatnak a folyamata a következő cikkben kerül bemutatásra.
Ha valaki nem szeretne foglalkozni a programok egyikének a letöltésével, vagy a szükséges pcap file-ok előállításával, de érdeklődik a téma iránt, akkor a következő linkről letöltheti különböző hálózati forgalmakat tartalmazó pcap file-okat.
https://github.com/gymgit/s7-pcaps
Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .
A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .
Bemutatjuk most a saját (!) Wifi-s hálózatunk tesztelésének az alapjait. Megnézzük, hogy hogyan lehet biztonságos jelszót választani. Feltörhetetlen rendszer nem létezik, de megismerve a tesztelés folyamatát, válaszokat kaphatunk arra vonatkozólag, h. . . .