Esempio n. 1
0
        private (IcsMitreTechnique, IcsMitreTactic, string, string, string)? CheckProtocol(string port, ConnDataLine connDataLine, NoticeDataLine key)
        {
            switch (port)
            {
            case "80":
            case "8080":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "http"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "443":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "ssl"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "53":
            case "5353":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "dns"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "23":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "telnet"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "161":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "snmp"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "502":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "modbus"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "22":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "ssh"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "102":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "s7comm"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "20000":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "dnp3"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            case "44818":
            {
                if (!string.IsNullOrEmpty(connDataLine.ServiceProtocol) && !string.Equals(connDataLine.ServiceProtocol, "ethernet/ip"))
                {
                    return(ConstructTechnique(connDataLine, key));
                }
                return(null);
            }

            default:
                return(null);
            }
        }
Esempio n. 2
0
        private (IcsMitreTechnique, IcsMitreTactic, string, string, string)? ConstructTechnique(ConnDataLine connDataLine, NoticeDataLine key)
        {
            if (decimal.TryParse(connDataLine.TimeStamp, NumberStyles.Any, CultureInfo.InvariantCulture, out var dnsResult))
            {
                return(IcsMitreTechnique.CommonlyUsedPort, IcsMitreTactic.CommandAndControl, TimeConverter.UnixTimeToString(dnsResult), connDataLine.OriginAddress, connDataLine.ResponderAddress);
            }

            if (decimal.TryParse(key.TimeStamp, NumberStyles.Any, CultureInfo.InvariantCulture, out var noticeResult))
            {
                return(IcsMitreTechnique.CommonlyUsedPort, IcsMitreTactic.CommandAndControl, TimeConverter.UnixTimeToString(noticeResult), connDataLine.OriginAddress, connDataLine.ResponderAddress);
            }

            return(IcsMitreTechnique.CommonlyUsedPort, IcsMitreTactic.CommandAndControl, string.Empty, connDataLine.OriginAddress, connDataLine.ResponderAddress);
        }