Wireshark Developer and User Conference



Similar documents
Windows PowerShell Cookbook

Acknowledgments Finding Your Way Around Windows PowerShell p. 1 Getting Started with Windows PowerShell p. 3 Installing Windows PowerShell p.

Forefront Management Shell PowerShell Management of Forefront Server Products

Microsoft Windows PowerShell v2 For Administrators

POWERSHELL (& SHAREPOINT) This ain t your momma s command line!

Windows PowerShell Essentials

SUNGARD SUMMIT 2007 sungardsummit.com 1. Microsoft PowerShell. Presented by: Jeff Modzel. March 22, 2007 Course ID 453. A Community of Learning

Command Line Crash Course For Unix

Things I wish I d known when I started using PowerShell

Jeffrey Snover Distinguished Engineer & Lead Architect Jason Helmick Senior Technologist, Concentrated Technology

Automating Microsoft

More about Continuous Integration:

PowerShell for Exchange Admins

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, Introduction 1. 2 Invoking Shell Scripts 2

Web Development using PHP (WD_PHP) Duration 1.5 months

Windows PowerShell. 3.0 Step by Step. Ed Wilson

Windows PowerShell Fundamentals

Command Line - Part 1

CS 2112 Lab: Version Control

List of FTP commands for the Microsoft command-line FTP client

Using Management Shell Reports and Tracking User Access in the NetVanta UC Server

IBM WebSphere Application Server Version 7.0

Authoring for System Center 2012 Operations Manager

Microsoft. Jump Start. M3: Managing Windows Server 2012 by Using Windows PowerShell 3.0

PCD Test Tools. These tools provide various test functions for the Power Chain Device Toolkit web services (BACnetWS+).

Unix Scripts and Job Scheduling

embeo Getting Started and Samples

Linux command line. An introduction to the Linux command line for genomics. Susan Fairley

PHP Integration Kit. Version User Guide

Tutorial 0A Programming on the command line

TECHNICAL REFERENCE GUIDE

DMZ Network Visibility with Wireshark June 15, 2010

Matisse Installation Guide for MS Windows. 10th Edition

An Introduction to Using the Command Line Interface (CLI) to Work with Files and Directories

SnapLogic Tutorials Document Release: October 2013 SnapLogic, Inc. 2 West 5th Ave, Fourth Floor San Mateo, California U.S.A.

Secure Messaging Server Console... 2

DiskPulse DISK CHANGE MONITOR

CLC Server Command Line Tools USER MANUAL

The software shall provide the necessary tools to allow a user to create a Dashboard based on the queries created.

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0

Make a folder named Lab3. We will be using Unix redirection commands to create several output files in that folder.

Customer Tips. Xerox Network Scanning HTTP/HTTPS Configuration using Microsoft IIS. for the user. Purpose. Background

Tcl and Cloud Computing Automation

Advanced Web Security, Lab

Deployment Guide Microsoft System Center Operations Manager (SCOM)

HP-UX Essentials and Shell Programming Course Summary

StreamServe Job Gateway

Automating. Administration. Microsoft SharePoint with Windows. PowerShell 2.0. Gary Lapointe Shannon Bray. Wiley Publishing, Inc.

Matisse Installation Guide for MS Windows

Networks and Security Lab. Network Forensics

Managed File Transfer with Universal File Mover

Click Studios. Passwordstate. Password Discovery, Reset and Validation. Requirements

TECHNICAL REFERENCE GUIDE

FileMaker Server 12. Custom Web Publishing with PHP

Offline Image Viewer Guide

Web VTS Installation Guide. Copyright SiiTech Inc. All rights reserved.

Wireshark Deep packet inspection with Wireshark

Network Security EDA /2012. Laboratory assignment 4. Revision A/576, :13:02Z

Thirty Useful Unix Commands

LabVIEW Internet Toolkit User Guide

Basic C Shell. helpdesk@stat.rice.edu. 11th August 2003

Introduction to HDFS. Prasanth Kothuri, CERN

Microsoft Corporation. Project Server 2010 Installation Guide

You Should Be Using PowerShell Aaron Kaiser Senior Technology Support Specialist Parkway School District

Installation Troubleshooting Guide

A Crash Course on UNIX

FrontDesk. (Server Software Installation) Ver

WebSpy Vantage Ultimate 2.2 Web Module Administrators Guide

Web development... the server side (of the force)

IceWarp to IceWarp Server Migration

Command-Line Operations : The Shell. Don't fear the command line...

CAPIX Job Scheduler User Guide

Contents About the Contract Management Post Installation Administrator's Guide... 5 Viewing and Modifying Contract Management Settings...

SETUP SSL IN SHAREPOINT 2013 (USING SELF-SIGNED CERTIFICATE)

Configuring and Integrating PowerShell

Security Correlation Server Quick Installation Guide

How To: Manage your Oracle patch deployment life cycle using Oracle Support Patch Plans

Network Connect & Junos Pulse Performance Logs on Windows

Admin Report Kit for Active Directory

Network Probe User Guide

Introduction to HDFS. Prasanth Kothuri, CERN

SPHOL205: Introduction to Backup & Restore in SharePoint Hands-On Lab. Lab Manual

TZWorks Windows Event Log Viewer (evtx_view) Users Guide

WinSCP PuTTY as an alternative to F-Secure July 11, 2006

TECHNICAL REFERENCE GUIDE

SYSTEM REQUIREMENTS...3

FileMaker 11. ODBC and JDBC Guide

Receiver Updater for Windows 4.0 and 3.x

RSA Security Analytics

PowerShell for Dummies

CLC License Server Administrator Manual

How To Gather Log Files On A Pulse Secure Server On A Pc Or Ipad (For A Free Download) On A Network Or Ipa (For Free) On An Ipa Or Ipv (For An Ubuntu) On Your Pc

Installation and Deployment

FileMaker Server 13. Custom Web Publishing with PHP

Data Intensive Computing Handout 5 Hadoop

1. Stem. Configuration and Use of Stem

INASP: Effective Network Management Workshops

ecopy ShareScan 5.0 SQL installs guide

How To Install Powerpoint 6 On A Windows Server With A Powerpoint 2.5 (Powerpoint) And Powerpoint On A Microsoft Powerpoint 4.5 Powerpoint (Powerpoints) And A Powerpoints 2

AN INTRODUCTION TO UNIX

Transcription:

Wireshark Developer and User Conference PowerShell and TShark 26 June 2012 Graham Bloice So,ware Developer Trihedral UK Limited SHARKFEST 12 UC Berkeley June 24-27, 2012

IntroducJon R&D So,ware Developer with Trihedral UK Limited, a SCADA/HMI vendor. Trihedral s so,ware products run on Windows. Use Wireshark (and Tshark) for analyzing industrial protocols and telemetry. First contributed to Wireshark source code in 1999, core developer since 2003. PowerShell user since 2006.

Topics PowerShell, an introducjon. Using Tshark with PowerShell, converjng *nix commands. Advanced PowerShell funcjonality. Q&A.

Audience ParJcipaJon How many are Windows bound? How many have heard of PowerShell? How many have used PowerShell at all? How many use PowerShell frequently?

PowerShell IntroducJon PowerShell is the task automajon framework for Windows. Comprised of: Command- line shell. ScripJng language. Integrated ScripJng Environment (ISE). Built on, and integrated with,.net Framework Access to COM and WMI. Enables administrators to perform admin tasks on local and remote machines.

Why PowerShell? Replaces limited funcjonality of DOS and CMD shells. Allows scripjng of Windows systems and products, e.g OS, Exchange, AcJve Directory. Incorporated into all new Windows products.

PowerShell Versions V1.0, arrived with Server 2008 in Nov 2006, available for XP SP2/3, Server 2003 and Vista. V2.0, arrived with Windows 7 and Server 2008R2 in August 2009, available for XP SP3, Server 2003 SP2, Vista SP1 and Server 2008 SP1. V3.0 coming with Windows 8 and Server 2012. This presentajon discusses V2.0.

PowerShell Overview PowerShell can execute: Cmdlets,.NET programs built for PowerShell. Script Files containing PowerShell commands. PowerShell funcjons. Any other executable program. Has a pipeline, but is object based. Pipeline elements don t need to reparse textual output. ScripJng language is dynamically typed.

PowerShell Help Built in cmdlet 'Get- Help', aliased to 'help' and 'man' Can use wildcards such as *, e.g. 'help *var*'. Help for each command, e.g. 'help Get- Help' or 'Get- Help -?'. Several levels of help, add switches for more, e.g. Examples, - Detailed, - Full. Conceptual help, e.g. 'help about*' lists topics.

PowerShell Keywords PowerShell language, help about_language_keywords. FuncJons; funcjon; param; return; begin; process; end; dynamicparam; data; filter. Branching; if; else; elseif; switch. Loops; do while unjl; while; for; foreach; in; break; conjnue. ExcepJon handling; try; catch; finally; trap; throw.

PowerShell Basics I Variables are prefixed with $, are not case- sensijve and are dynamically typed. Variable scope is global, script or private. Variables are: User created variables such as $myvar, created or changed by assigning a value, e.g. '$myvar = 42'. AutomaJc variables such as $args and $_, store the state of PowerShell. Preference variables are opjons and are set default values by PowerShell and can be changed, e.g. $MaximumHistoryCount. Current variable type can be found by piping to Get- Member, e.g. '$myvar Get- Member'. See help topics 'about_variables' and 'about_automajc_variables' and 'about_environment_variables'.

PowerShell Basics II Cmdlets are based on a Verb- Noun pauern, e.g 'Get- Help'. To see all commands use 'Get- Command'. Object properjes accessed using. operator, e.g. '$object.property'. Object member funcjons accessed using. operator and passing parameters in parenthesis, e.g. '$object.member($aparameter)'. To inspect object methods and parameters, pipe to Get- Member, e.g. '$a Get- Member'.

PowerShell Basics III FuncJon arguments can be posijon based or named, e.g. 'Get- Help help' or 'Get- Help Name help'. FuncJon calls use space to separate arguments, e.g. 'myfuncjon parm1 parm2'. Operators include arithmejc, assignment, comparison, logical, redirecjon, split/join, type, unary, special. See 'help about_operators'. Access to all of.net, e.g. '[System.Math]::Sqrt(9)'.

PowerShell Data I Structured data types, arrays: construct with, operator, e.g. '$a = 1,2,3,4,"data",5'. Can also construct a range with.. operator, e.g. '$a = 1..10'. Access via subscript operator, e.g. '$a[1]'. NegaJve numbers count from the end, e.g. '$a[- 1]' for last element. Length given by length or Count properjes, e.g. '$a.length'. Set an element using assign, e.g. '$a[4] = 111' or SetValue method, e.g. '$a.setvalue(111, 4)'.

PowerShell Data II Structured data types, hashtables: Hashtable (or dicjonary or associajve array) holds name/value pairs. construct with @{}, operator, e.g. '$h = @{int1=42;float1=24.4;string1= help }'. Access via. or [] operators, e.g. '$h.int1', '$h["int1"]. Sort by piping enumerator to sort, e.g. '$h.getenumerator() sort key'.

PowerShell Aliases An alias is an alternate name or nickname for a cmdlet or command element. See 'help about_aliases'. Many built- in aliases, e.g. 'help' and 'man' are aliases for the 'Get- Help' cmdlet. See current aliases with 'Get- Alias' or it s alias 'alias'. Create an alias with 'New- Alias', e.g. 'New- Alias tshark 'C:\Program Files (x86)\wireshark\tshark.exe''.

PowerShell Providers I Providers enable access to data stores, e.g. FileSystem, Registry, Environment, AcJve Directory and more. Providers use a drive prefix and then a path. To list providers use 'Get- PSProvider'. Filesystem provider uses standard drive leuers and paths, e.g. 'C:\Temp\Afile.txt'.

PowerShell Providers II Other drives; Alias, FuncJon, Environment (Env), HKLM, Variable and more. To list drives use 'Get- PSDrive'. Can create drives for own use, e.g. my captures drive 'New- PSDrive name CAPS PSProvider FileSystem Root "C:\Temp\Caps" DescripJon "Captures Directory"'. PowerShell drives are only usable from PowerShell cmdlets and funcjons. Use 'Convert- Path' to pass to other executables.

Common use commands I Lots of aliases that make things familiar from dos or other shells. Directory manipulajon: dir, cd, md, rd, pushd, popd. ls, cd, mkdir, rmdir. File manipulajon: type, copy, del, echo. cat, cp, diff, rm. Output to a file (output is Unicode by default): RedirecJon using >, e.g. '"help " + "me" > test.txt'. Using Out- File, e.g. '"help " + "me" Out- File test2.txt'. Out- File can set encoding, e.g. '"help " + "me" Out- File Encoding ASCII test3.txt'.

Common use commands II CounJng things in a pipeline, e.g. '$a measure'. SorJng in a pipeline, e.g. '$a sort'. opjonally reversed with '- Descending'. SelecJng the first or last set of elements in a pipeline, e.g. '$a select First 5' or 'select Last 5'.

Common use commands III Removing duplicates from a pipeline, e.g. '$a select Unique'. Filtering in a pipeline, e.g. '$a where { $_.SomeProperty eq "SomeValue" }'. Iterate over elements in a pipeline performing an operajon on the elements, e.g. '$a % { $_ + 10 }'. Note use of '$_' to denote current input object.

Data Format conversion. PowerShell can handle csv format, cmdlets to import/export objects to files, and pipeline values, e.g. Export- CSV, Import- CSV, ConvertTo- CSV, ConvertFrom- CSV. Csv input can define field names using first row, or they can be supplied by a ' Header' parameter to ConvertFrom- CSV. '$a = "first,second", "1,2", "8,9","3,4" ConvertFrom- CSV'.

PowerShell and Tshark How to use PowerShell to process tshark output. Examples shamelessly stolen, with permission, from Sake Blok s SharkFest 2010 presentajon. Captures used (example.cap & hup.cap) are on hups://surf.cloudshark.org (username sharkfest, password sharkfest).

Access to Tshark By default, the Windows installer doesn t put the Wireshark directory on the path. Two opjons: Create an alias: 'New- Alias tshark "path\to\tshark.exe"'. Modify the path: '$env:path += ";path/to/wireshark/directory". Modifying the path gives access to all the other tools, e.g. capinfos etc.

CommunicaJng with Tshark PowerShell can call tshark, passing in parameters, and then process the output. Parameters can be awkward, due to delimiters, just quote them all with ". Tshark produces text, PowerShell interprets this output as an array of text strings. PowerShell likes csv so tshark parameters for fields are o,en used, e.g. ' T Fields E "separator=," e xxx'.

CounJng hup response codes I Problem: Need hup response codes and counts. Approach: Print only hup response code. Make sorted table. Count.

CounJng hup response codes II The command: 1 tshark r example.cap R http.response ` 2 T fields e http.response.code 3 sort Unique measure Pipeline breakdown: 1. Calls tshark, provides the input file and the filter. 2. Specifies field output, and the required field. 3. Pipes the output to sort, selecjng unique entries and then pipes that to measure.

Top 10 requested URL s I Problem: Need a list of visited URL s. Approach: Print full request uri. Strip all parameters (e.g. a,er? ). Count URL s. Return top 10.

Top 10 requested URL s II The command: 1 tshark -r example.cap -R http.request ` 2 -T fields -e http.request.full_uri 3 % { ($_.Split("?"))[0] } group 4 sort Count Descending select Name,Count First 10 Breakdown: 1. Calls tshark, provides the input file and the filter. 2. Specifies field output and the required field. 3. Iterates over the entries, forming a new string from the first part of the URI up to the?. Pipes result to group results. 4. Pipes to sort using member Count in descending order, and then pipes to select the fields and the first 10 results.

All sessions with cookie XXXX I Problem: Need to see only data from a specific session, i.e. have a cookie "PHPSESSID=c0bb9d04cebbc765bc9bc366f663fcaf" Will return a new capture file with the required data. Approach: Select packets that contain the cookie. Grab the port numbers. Create a new filter with these port numbers. Use filter to extract sessions. Save packets to a new file.

All sessions with cookie XXXX II The command: 1 tshark -r.\example.cap w cookie.cap ` 2 -R ((tshark -r.\example.cap T fields e tcp.srcport ` 3 -R "http.request and http.cookie contains ` c0bb9d04cebbc765bc9bc366f663fcaf" 4 % { "tcp.port=={0}" f $_} ) -join " ") Breakdown: 1. Calls tshark, provides the input and output files. 2. Specifies a filter, contents in (). Filter is a call to tshark using same input file and prinjng the tcp.srcport field. 3. And has a filter for the session idenjfier. 4. Iterates over the entries, forming a new string from the port number. Joins each of these strings using.

All sessions for user XXXX I Problem: A parjcular user has muljple sessions and I need to see all sessions for that user. Output: Will return a new capture file with the required data. Approach: Print all session cookies for user xxxx. Create a new capture file per session cookie as per previous example. Merge files to new output file.

All sessions for user XXXX II # Sessions for user param( $file, $user ) $userfilter = "http.request and http contains $user" $cookies = tshark -r "$file" -R $userfilter ` -T fields -e "http.cookie" % { $_.split("=")[2] } foreach ($cookie in $cookies) { $tmpfile = "tmp_$cookie.cap" write-host "Processing session cookie $cookie to $tmpfile } $cookiefilter = "http.request and http.cookie contains $cookie" tshark -r $file -w $tmpfile -R ((tshark -r $file -R $cookiefilter ` -T fields -e "tcp.srcport" % { "tcp.port=={0}" -f $_ }) -join " ") & mergecap -w "$user.cap" tmp_*.cap rm tmp_*.cap

Advanced PowerShell funcjonality PowerShell can interface with any COM object, e.g. Excel. PowerShell has full access to the.net framework, e.g. Windows Forms and Charts.

Driving Excel I PowerShell has built in support for interacjon with COM objects, e.g. Excel. Again we ll use the top URL s, but this Jme the whole list and push it into Excel. Create the Excel object and obtain references to some further objects in Excel. $xl = New-Object -ComObject 'Excel.Application' $wb = $xl.workbooks.add() $ws = $wb.activesheet $cells = $ws.cells

Driving Excel II Set the Jtle cell, including formaƒng $cells.item(1,1) = "Top URL's" $cells.item(1,1).font.bold = $true $cells.item(1,1).font.size = 18

Driving Excel III Iterate over data seƒng values into cells. $row = 1 foreach ($url in $topurl) { $row++ $col = 1 $cells.item($row,$col) = $url.name $col++ $cells.item($row,$col) = $url.count } $xl.visible = $true $wb.saveas("c:\temp\sharkfest12\urls.xlsx")

Driving Excel IV Show Excel UI, and save the file. $xl.visible = $true $wb.saveas("c:\temp\sharkfest12\urls.xlsx") Cleanup and exit. $wb.close() $xl.quit()

.Net CharJng.Net CharJng is a download for.net 3.5, included with.net 4.0. PowerShell defaults to running under.net 2.0. To check version use '[environment]::version'. To run powershell under 4.0 requires applicajon configurajon file (powershell.exe.config) next to powershell.exe ($pshome): <?xml version="1.0" encoding="utf-8"?> <configuration> <!-- http://msdn.microsoft.com/en-us/library/ w4atty68.aspx --> <startup uselegacyv2runtimeactivationpolicy="true"> <supportedruntime version="v4.0" /> <supportedruntime version="v2.0.50727" /> </startup> </configuration>

.Net CharJng CreaJng a chart Using LibraryChart.ps1 from PoshCode. Using the top 10 URL s from earlier in the presentajon, pipe to Out- Chart: $top10 Out-Chart xfield Name yfield Count charttype 'Pie' Can also save image to a file: $top10 Out-Chart xfield Name yfield Count ` charttype 'Pie' ` filename C:\temp\SharkFest12\top10pie.png

Resources MSDN Start here for PowerShell: hup://msdn.microso,.com/en- us/library/windows/desktop/ dd835506%28v=vs.85%29.aspx Technet: hup://technet.microso,.com/en- us/scriptcenter/ powershell.aspx PoshCode repository of code: hup://poshcode.org Don Jones ShellHub: hup://shellhub.com/ Windows 7 Resource Kit PowerShell Pack: hup://archive.msdn.microso,.com/powershellpack PowerShell Community Extensions (PSCX): hup://pscx.codeplex.com/

QuesJons? Maybe even some answers.