What do security low-level development engineers need to learn?

Network protocol

Network security low-level development engineers need to have an in-depth understanding of network knowledge in order to better understand the challenges in the field of network security and develop corresponding solutions. For protocols such as TCP, UDP, ICMP, and ARP, you need to know the following:

  1. TCP (Transmission Control Protocol):

    • Understand the working principle of TCP, including three-way handshake, four-way wave, flow control, congestion control, etc.

    • Familiar with TCP header fields, such as source port, destination port, sequence number, confirmation number, data offset, reserved bits, flag bits (SYN, ACK, FIN, RST, PSH, URG), window size, checksum, emergency pointer wait.

  2. UDP (User Datagram Protocol):

    • Understand the working principle of UDP, including connectionless, unreliable, message-oriented and other characteristics.

    • Be familiar with UDP header fields, such as source port, destination port, length, checksum, etc.

  3. ICMP (Internet Control Message Protocol):

    • Understand the functions of ICMP, such as error reporting, network diagnosis, etc.

    • Familiar with ICMP message types, such as echo request (ping), echo response, destination unreachable, time exceeded, etc.

    • Be familiar with ICMP header fields, such as type, code, checksum, and other fields related to message types, etc.

  4. ARP (Address Resolution Protocol):

    • Understand how ARP works, such as mapping IP addresses to physical addresses (MAC addresses), etc.

    • Be familiar with ARP header fields, such as hardware type, protocol type, hardware address length, protocol address length, operation code (request or response), sender MAC address, sender IP address, target MAC address, target IP address, etc.

In addition to these protocols, network security bottom-level development engineers also need to be familiar with other network layer and data link layer protocols such as IP (Internet Protocol), Ethernet, VLAN, MPLS, etc. In addition, you also need to understand the working principles of network devices (such as routers, switches, firewalls, etc.), as well as network security-related technologies and concepts (such as encryption, authentication, access control, vulnerabilities, attack methods, etc.).

On the basis of mastering these network knowledge, you also need to have programming capabilities (such as C, C++, Python and other languages), debugging and reverse engineering skills, operating system knowledge (especially network stack and security-related parts), etc., in order to engage in network work. Security underlying development work.

  1. TCP (Transmission Control Protocol) header fields:

    • Source port (16 bits): The port number of the sender.

    • Destination port (16 bits): The port number of the receiver.

    • Sequence number (32 bits): The sequence number of the first byte in the data byte stream sent by the sender.

    • Confirmation number (32 bits): The sequence number of the next byte that the receiver expects to receive.

    • Data offset (4 bits): Indicates the length of the TCP header, in 32-bit words.

    • Reserved bits (6 bits): reserved fields, generally set to 0.

    • Flag bits (6 bits): including URG, ACK, PSH, RST, SYN and FIN, etc., used to indicate different TCP control messages.

    • Window size (16 bits): The receiving window size specified by the receiver.

    • Checksum (16 bits): Check the entire TCP message to ensure data integrity.

    • Urgent pointer (16 bits): When the URG flag is set, it indicates the location of urgent data in the data stream.

  2. UDP (User Datagram Protocol) header fields:

    • Source port (16 bits): The port number of the sender.

    • Destination port (16 bits): The port number of the receiver.

    • Length (16 bits): The byte length of the entire UDP message (including header and data).

    • Checksum (16 bits): Check the entire UDP message to ensure data integrity.

  3. ICMP (Internet Control Message Protocol) header fields:

    • Type (8 bits): Indicates the type of ICMP message, such as echo request, echo response, destination unreachable, etc.

    • Code (8 bits): Used in conjunction with the type field to provide more detailed message information.

    • Checksum (16 bits): Check the entire ICMP message to ensure data integrity.

  4. ARP (Address Resolution Protocol) header fields:

    • Hardware type (16 bits): Indicates the hardware type used, such as 1 for Ethernet.

    • Protocol type (16 bits): Indicates the protocol type used, such as 0x0800 for IPv4.

    • Hardware address length (8 bits): Indicates the byte length of the hardware address (such as MAC address), 6 for Ethernet.

    • Protocol address length (8 bits): Indicates the byte length of the protocol address (such as IP address), which is 4 for IPv4.

    • Operation code (16 bits): Indicates the ARP operation type, such as 1 for request and 2 for response.

    • Sender MAC address (48 bits): The hardware address of the sender, such as the MAC address of the Ethernet.

      • Sender IP address (32 bits, IPv4): The protocol address of the sender, such as an IPv4 address.

      • Target MAC address (48 bits): Target hardware address, such as the MAC address of Ethernet. On ARP requests, this field is usually filled with 0.

      • Destination IP address (32 bits, IPv4): Destination protocol address, such as an IPv4 address.

      In addition to TCP, UDP, ICMP and ARP protocols, you also need to understand the following protocols and related knowledge:

      1. IP (Internet Protocol) header fields:

        • Version (4 digits): Indicates the version of the IP protocol, such as 4 for IPv4 and 6 for IPv6.

        • Header length (4 bits): Indicates the length of the IP header, in 32-bit words.

        • Service type/differentiated service (8 bits): used to define service quality, such as priority, delay, throughput, etc.

        • Total length (16 bits): The length in bytes of the entire IP datagram (including header and data).

        • Identification (16 bits): used to uniquely identify a datagram for use during fragmentation and reassembly.

        • Flags (3 bits): including "no fragmentation" (DF) and "more fragmentation" (MF), etc., used to control the fragmentation and reassembly of datagrams.

        • Fragment offset (13 bits): Indicates the offset of the datagram fragment in the original datagram, in 8-byte units.

        • Time to live (TTL, 8 bits): used to limit the life cycle of datagrams in the network to prevent infinite loops.

        • Protocol (8 bits): Indicates the type of upper layer protocol, such as TCP is 6, UDP is 17, and ICMP is 1.

        • Checksum (16 bits): Verifies the IP header to ensure data integrity.

        • Source IP address (32 bits, IPv4): The IP address of the sender.

        • Destination IP address (32 bits, IPv4): The IP address of the recipient.

      2. Ethernet frame format:

        • Destination MAC address (48 bits): The hardware address of the receiver, such as the Ethernet MAC address.

        • Source MAC address (48 bits): The hardware address of the sender, such as the MAC address of Ethernet.

        • Type/length (16 bits): Indicates the type of the upper layer protocol, such as 0x0800 for IPv4, 0x0806 for ARP, or the length of the Ethernet frame.

        • Data: Contains data of the upper layer protocol.

        • Frame check sequence (FCS, 32 bits): Checks the entire Ethernet frame to ensure data integrity.

      Understanding these basic network protocols and related knowledge is the basis for engaging in underlying network security development work. In addition, you will need to master deeper cybersecurity knowledge and skills, including but not limited to:

      1. Network security protocols: Understand and master security protocols, such as SSL/TLS, IPSec, SSH, etc., as well as their working principles and implementation details.

      2. Cryptography: Understand the basic principles of encryption and decryption, and be familiar with commonly used symmetric encryption and asymmetric encryption algorithms, such as AES, RSA, DSA, etc., as well as cryptographic principles and technologies such as hash functions and digital signatures.

      3. Vulnerability analysis and exploitation: Understand common types of security vulnerabilities, such as buffer overflow, SQL injection, XSS, etc., as well as methods of vulnerability mining, analysis and exploitation.

      4. Reverse engineering and binary analysis: Be familiar with the basic skills of reverse engineering and binary analysis, such as static analysis, dynamic analysis, debugging, etc., and master related tools, such as IDA Pro, Ghidra, OllyDbg, GDB, etc.

      5. Intrusion detection and prevention: Understand the basic principles of intrusion detection and prevention, including security protection technologies at the host and network levels, such as firewalls, IDS/IPS, sandboxes, etc.

      6. In-depth understanding of operating system principles and network stack implementation: Be familiar with the operating system's kernel components, memory management, process scheduling and other underlying mechanisms, and master the implementation details of the network stack, such as TCP/IP protocol stack, routing algorithms, etc.

      7. Programming ability: Have a solid programming foundation and be proficient in using programming languages ​​such as C/C++ and Python for underlying network security development.

      8. System security and hardening: Understand the security configuration and hardening methods of operating systems, applications and network devices, and be able to evaluate system security and adopt appropriate security strategies.

      9. Security testing and penetration testing: Be familiar with security testing and penetration testing methods and tools, such as Nmap, Metasploit, Wireshark, etc., and be able to conduct security assessment and attack simulation on the target system.

      10. Continuously learn and pay attention to the latest developments in the security field: The field of network security changes rapidly, and it is necessary to continuously learn and pay attention to the latest technology trends, vulnerability disclosures, security policies, etc., in order to adapt to the evolving network security environment.

      Mastering the above skills and knowledge will help you become an excellent low-level network security development engineer. At the same time, it is also very important to continuously improve one's practical experience and ability to solve practical problems. The following are some suggestions to help you better grow as a low-level network security development engineer:

      1. Hands-on practice: It is very important to combine theoretical knowledge with practice. By participating in actual projects or implementing security tools, vulnerability exploits, etc. on your own, you can deepen your understanding of network security principles and technologies.

      2. Participate in security competitions and training: By participating in cybersecurity competitions (such as CTF) and professional training, you can improve your skill level and communicate with and learn from other cybersecurity practitioners.

      3. Read security-related books and papers: Regularly read classic books and latest papers in the field of network security to expand your knowledge and deepen your understanding.

      4. Analyze and learn open source security tools and frameworks: By studying the source code of excellent open source security tools and frameworks, you can learn some excellent design and implementation skills.

      5. Participate in security communities and forums: Join cybersecurity-related communities and forums to communicate with other security practitioners, follow security trends, and share experiences and skills.

      6. Write technical blogs and articles: By writing technical blogs and articles, you can summarize your own learning and practical experience, which will help deepen your understanding and provide reference for others.

      7. Obtain security certification: Obtaining relevant security certifications, such as CISSP, CEH, OSCP, etc., can improve your professional level and market competitiveness.

      8. Maintain curiosity and a learning attitude: The field of network security is developing rapidly. Maintaining curiosity and a continuous learning attitude is the key to becoming an excellent network security low-level development engineer.

      Through the above efforts, you will better master the skills and knowledge required for network security underlying development and lay a solid foundation for your career development.

Network security certification

CISSP (Certified Information Systems Security Professional) is a globally recognized information security professional certification issued by the International Information Systems Security Certification Consortium (ISC²). The CISSP certification not only proves your professional knowledge and abilities in the field of information security, but also demonstrates your good work ethics and commitment to security practices. This certification may not be directly relevant for low-level cybersecurity developers, but it will certainly add value to your career.

However, to become a network security low-level development engineer, you may need to pay more attention to some certifications closely related to low-level development, vulnerability mining and exploitation, etc. For example, certifications such as OSCP (Offensive Security Certified Professional) and OSCE (Offensive Security Certified Expert) may be more helpful to you. These certifications cover the skills and knowledge required of low-level development engineers in network security, such as penetration testing, vulnerability exploitation, binary analysis, and reverse engineering.

Overall, although the CISSP certificate may not be the most directly relevant certification for network security low-level development engineers, it is still a qualification worth having that can improve your professionalism and market competitiveness. At the same time, you should also pay attention to other certifications that are more directly related to low-level development and network security, so as to better prepare to become an excellent low-level network security development engineer.

I recommend a free tutorial from Zero Sound Academy. I personally think the teacher’s lecture is good. I would like to share it with you: [Linux, Nginx, ZeroMQ, MySQL, Redis, fastdfs, MongoDB, ZK, streaming media, CDN, P2P, K8S, Docker, TCP/IP , coroutines, DPDK and other technical content, click to learn now:

Guess you like

Origin blog.csdn.net/weixin_36184908/article/details/130197026