buildingopensourcenetworksecuritytools-schiffman2003

0001-01-01

Building Open Source Network Security Tools: Components and Techniques

by Mike D. Schiffman (2003)

ISBN 0-471-20544-3

Wiley Publishing Inc.

Notes
xi @stake
ISS
Cambridge Technology Partners
firewalk
tracerx
libnet
Fortune 500
“Hack Proofing Your Network: Internet Tradecraft
“Hacker’s Challenge”
xiii Dominique Brezinski
In-Q-Tel
Windows NT Magazine
Information Security Magazine
xiv Adam J. O’Donnell
NSF
Drexel University
electrical engineering
Lucent Technologies
Guardent Inc.
distributed system
computer security
xv strobe (port scanner)
Julian Assange
Renaud Deraison
Nessus
Marty Roesch
Snort
NIDS
traceroute
Gerald Combs
Ethereal
Fyodor
Nmap
Dug Song
Dsniff
fragroute
IP fragmentation
port scan
xvi David Goldsmith
UDP traceroute
active reconnaissance
IP expiry
DNS - port 53
hops
firewall
xviii TTL
ICMP time exceeded
xix libpcap
libnet
libnids
libsf
OpenSSL
passive reconnaissance
penetration testing
API
OpenBSD
gcc
Cygwin
xxi printf
C
packet injection
macro
packet capture
software library
code reuse
Task Focus
portability
code readability
callback function
int
char
short
pointer
array
function pointer
xxii function reentrance
thread safety
assertion
assert()
abort()
NULL
xxiii Courier font
1 network security tool
2 libnids
6 Software Development Lifecycle
9 libpcap
Lawrence Berkeley National Laboratory
10 pcap_t
pcat_addr_t
typedef
function
struct
struct pcap_addr
struct sockaddr
11 netmask
broadcast address
P2P
pcap_if_t
pcap_findalldevs()
pcap_open_live()
struct pcap_stat
u_int
13 struct pcap_pkhdr
caplen
snaplen
network interface
14 pcap_lookupdev()
promisc
802.2 SNAP
PCAP_ERRBUF_SIZE
“any” device on Linux w/ libpcap
IRIX
HP-UX
Ultrix
Digital Unix
pcap_open_dead()
Solaris
802.11 wireless networking
15 pcap_open_offline()
pcap_close()
16 pcap_freealldevs()
pcap_dispatch()
pcap_read()
u_char
17 pcap_loop()
pcap_next()
pcap_setnonblock()
pcap_getnonblock()
18 BPF - Berkeley Packet Filter
pcap_lookupnet()
pcap_compile()
pcap_compile_nopcap()
boolean
19 pcap_setfilter()
pcap_freecode()
pcap_dumper_t
pcap_dump_open()
pcap_dump()
void
stdin, stdout, stderr
20 pcap_is_swapped()
byte order
pcap_major_version()
pcap_minor_version()
pcap_file()
pcap_dump_close()
pcap_datalink()
21 pcap_snapshot()
pcap_stats()
struct pcap_stat
pcap_fileno()
DLPI
pcap_perror()
pcap_geterr()
pcap_strerror()
strerror()
libc
errno
22 MAC address
OUI - Organizationally Unique Identifier
arpatch
hash table
Big-O notation
O(1)
O(log N)
balanced binary tree
35 libnet
struct bpf_program
BSD license
36 ./configure;make;make install
packet checksum
38 libnet_init()
libnet_build_tcp()
libnet_build_ipv4()
libnet_build_ethernet()
libnet_write()
libnet_destroy()
raw socket interface
39 MTU
IP fragmentation - DF (Don’t Fragment)
link layer
computing packet checksums
40 libnet_toggle_checksum()
libnet_t
libnet_ptag_t
libnet_stats structure
libnet_write()
42 libnet_clear_packet()
43 libnet_addr2name4()
Yellow Pages (YP)
libnet_addr2name4_r()
libnet_name2addr4()
libnet_get_ipaddr4()
44 libnet_addr2name6_r()
libnet_name2addr6()
libnet_get_hwaddr()
libnet_hex_aton()
45 libnet_build()
NTP
libnet_build_ntp()
libnet_build_udp()
OSI model
libnet_build_data()
46 CDP
802.1Q
RARP
SNAP - Subnetwork Attachment Point
STP
VRRP
RIP
OSPF
BOOTP
47 libnet_autobuild_ethernet()
libnet_autobuild_ipv4()
libnet_autobuild_ipv4_options()
libnet_build_tcp_options()
48 libnet_geterror()
libnet_build_801_1q()
IEEE 802.2
link-layer control (LLC)
49 IPSEC
DIX
51 libnet_build_802_2snap()
52 libnet_build_arp()
RFC 826 - ARP
RFC 903 - RARP
53 libnet_build_bootpv4()
54 libnet_build_cdp()
55 libnet_build_data()
libnet_build_dhcpv4()
libnet_build_bootpv4()
56 libnet_build_dnsv4()
libnet_build_icmpv4_echo()
libnet_build_icmpv4_mask()
libnet_build_icmpv4_timestamp()
RFC 792 - ICMP
58 libnet_build_icmpv4_unreach()
59 libnet_build_icmpv4_timeexceed()
60 libnet_build_icmpv4_redirect()
/etc/protocols
62 libnet_build_ip6()
libnet_build_ntp()
RFC 2460 - IPv6
RFC 1119, 1305 - NTP
64 libnet_build_ospfv2()
RFC 2328 - OSPF
66 libnet_build_ospfv2_hello()
libnet_build_ospfv2_dbd()
67 libnet_build_ospfv2_lsr()
68 libnet_build_rip()
RFC 1058, RFC 2453 - RIP
70 libnet_build_stp()
IEEE 802.1d - Spanning Tree Protocol (STP)
71 IPMAXPACKET - 65535
72 RFC 768 - UDP
libnet_build_vrrp()
RFC 2338 - Virtual Router Redundancy Protocol (VRRP)
73 libnet_plist_chain_new()
libnet_plist_chain()
74 libnet_plist_chain_next_pair()
libnet_plist_chain_dump()
libnet_plist_chain_dump_string()
libnet_plist_chain_free()
libnet_getfd()
75 libnet_getdevice()
libnet_getpbuf()
libnet_getpbuf_size()
libnet_adv_cull_packet()
76 libnet_adv_write_link()
libnet_seed_prand()
libnet_get_prand()
gettimeofday()
77 punch - UDP packet blaster example program
87 E-box event generator
NIDS
libnids
88 IP defragmentation
TCP stream reassembly
port scan detection
nids_prm struct
syslog
90 tuple4 struct
91 half_stream struct
92 tcp_stream struct
93 nids_init()
94 nids_run()
nids_next()
nids_errbuf.nids_next() ????
BSD and Linux behavior differ with nids_next() and pcap_next()
95 nids_register_ip_frag()
nids_register_ip()
nids_register_udp()
nids_register_tcp()
96 nids_killtcp()
nids_discard()
lilt example program
Telnet
IRC
connection watching
RST
synchronous i/o
98 FreeBSD
99 OpenBSD
113 libsf
Shawn Bracken
BSD license
libdb
remote OS detection
fingerprinting
114 Michal Zalewski / lcamtuf
Fyodor (Nmap)
p0f
115 active fingerprinting
passive fingerprinting
MySQL
117 TTL
119 libsf_t typedef
libsf_init()
LIBSF_ACTIVE
LIBSF_PASSIVE
LIBSF_ERRBUF_SIZE
120 libsf_set_timeout()
libsf_destroy()
libsf_geterror()
121 libsf_active_id()
libsf_passive_id()
libsf_os_get_tm()
libsf_os_get_hs()
libsf_os_get_next()
libsf_os_get_match()
122 libsf_os_reset_counter()
legerdemain ???
129 libdnet
Dug Song / dugsong
ARP cache
route table
addr struct (dnet)
arp_entry struct
route_entry struct
intf_entry struct
fw_rule struct
arp_t typedef
route_t
intf_t
fw_t
ip_t
ip_t
eth_t
blob_t
134 rand_t
addr_comp()
addr_bcast()
addr_ntop()
135 addr_pton()
addr_ntoa()
addr_ntos()
addr_ston()
addr_btom()
addr_mtob()
136 addr_btos()
addr_stob()
arp_open()
arp_add()
arp_delete()
arp_get()
arp_loop()
137 arp_close()
route_open()
route_add()
route_delete()
route_get()
route_loop()
138 route_close()
intf_open()
intf_get()
intf_get_src()
intf_get_dst()
intf_set()
intf_loop()
intf_close()
140 fw_open()
fw_add()
fw_delete()
fw_loop()
fw_close()
fw_pack_rule()
Solaris
NetBSD
142 eth_open()
eth_get()
eth_send()
eth_close()
ip_open()
ip_add_option()
143 ip_checksum()
ip_send()
ip_close()
blob_new()
blob_read()
BUFSIZ
144 blob_write()
blob_seek()
blob_index()
blob_rindex()
blob_pack()
blob_unpack()
blob_print()
hexadecimal
blob_free()
random number generator
rand_open()
146 rand_get()
rand_set()
rand_add()
rand_uint8()
rand_uint16()
rand_uint32()
rand_shuffle()
147 rand_close()
clutch - ARP monitoring example program
163 OpenSSL
SSLeay
Eric Young
Tim Hudson
SSL
TLS
libssl.a
libcrypto.a
164 symmetric encryption: blowfish CAST DES IDEA RC2 RC4 RC5
asymmetric encryption: DSA DH RSA
public-key infrastructure (PKI)
OCSP
x509
CRL
EVP
ASN.1
PRNG
ssh, sshd
isakmpd
EVP_Cipher()
EVP_Seal()
EVP_Open()
EVP_Digest()
EVP_Sign()
EVP_Verify()
Digests: HMAC MD2 MD5 MDC2 RIPEMD SHA SHA1
165 ITAR restrictions
166 ENGINE typedef
EVP_CIPHER_CTX
167 EVP_CIPHER
EVP_PKEY
EVP_MD_CTX
EVP_MD
OpenSSL_add_all_ciphers()
OpenSSL_add_all_digests()
OpenSSL_add_all_algorithms()
168 EVP_cleanup()
EVP_CIPHER_CTX_init()
EVP_get_cipherbyname()
EVP_CipherInit_ex()
169 EVP_CipherUpdate()
EVP_CipherFinal_ex()
EVP_CIPHER_CTX_cleanup()
EVP_CIPHER_set_padding()
170 EVP_CIPHER_CTX_set_key_length()
EVP_CIPHER_CTX_block_size()
EVP_CIPHER_CTX_key_length()
EVP_CIPHER_CTX_iv_length()
EVP_CIPHER_CTX_get_app_data()
EVP_CIPHER_CTX_set_app_data()
EVP_CIPHER_CTX_flags()
EVP_CIPHER_CTX_mode()
171 EVP_SealInit()
EVP_SealUpdate()
EVP_SealFinal()
172 EVP_OpenInit()
EVP_OpenUpdate()
EVP_OpenFinal()
message digest
EVP_MD_CTX_init()
EVP_get_digestbyname()
173 EVP_DigestInit_ex()
EVP_DigestUpdate()
EVP_DigestFinal_ex()
EVP_MD_CTX_cleanup()
EVP_MD_CTX_md()
EVP_MD_CTX_size()
174 EVP_MD_CTX_block_size()
EVP_SignInit_ex()
digital signature
EVP_SignUpdate()
EVP_SignFinal()
EVP_PKEY_size()
EVP_VerifyInit_ex()
175 EVP_VerifyUpdate()
EVP_VerifyFinal()
roil - sample program
176 CAST algorithm
Carlise Adams
Stafford Tavares
magic number
193 packet sniffing
passive reconnaissance
wiretap
Ethernet
194 Layer 2
@stake Antisniff
ARP
ICMP_ECHO
802.11
ALOHA wireless network
University of Hawaii
Bob Metcalfe
Layer 1
promiscuous mode
Layer 3
195 demultiplexing
IEEE
802.3
Ethertype
Layer 4
197 Jonathan Swift - Gulliver’s Travels (endianness???)
network byte order
AND operator
FIN flag
198 scoop - sample program
201 exercise for reader - SSL traffic???
217 port scanning
IP expiry
218 well-known ports
registered ports
dynamic ports / private ports
RFC 1035
Information Technology (IT)
219 bandwidth
“interesting” ports
full-open port scanning
AF_INET
OpenBSD
221 identd - RFC 1413
222 FTP bounce scanning
half-open/SYN scanning
223 parallel scanning
UDP scanning
224 RFC 1812 - Requirements for IPv4 Routers
stealth scanning
225 XMAS scanning
NULL scanning
fragmented IP scanning
IP expiry
TTL
226 Van Jacobson
terminal packet
228 UDP traceroute
ICMP traceroute
232 firewalk
ACL - Access Control List
gateway
hopcount ramping
creeping walk
239 knock - sample program
257 cross-site scripting (XSS)
denial of service (DoS)
258 vulnerability scanning
260 HTML, XML, ASCII
LIFO
261 buffer overflow
suid root
264 shellcode
egg
265 get_esp()
NOP, NOP sled
267 format string vulnerability
268 printf()
format specifiers
270 snprintf()
272 sift - sample program
274 BIND
ISC - Internet Software Consortium
DNS Chaos class query
294 IETF - Internet Engineering Task Force
296 PKCS - Public Key Cryptography Standard
PKCS#12
302 NIDS - Network Intrusion Detection System
303 Descry - sample program
306 PATRICIA trie
327 SANS - Systems Administration / Network Security
Hacking Exposed books
Osborne McGraw-Hill publisher
336 SMTP
361 select()
373 firewalk example program

Links to this note