func (this *ServerType) createIndicatorsJSON(collectionName string) string { // Need to pass in the collection name they have requested // then go to the database and the get the fields that are needed // to populate the correct STIX message. // I need a table in the database add the source data and other things to the collections table // Create a new table for holding the indicators / observables. s := stix.New() i1 := s.NewIndicator() i1.SetTimestampToNow() if collectionName == "ip-watch-list" || collectionName == "url-watch-list" { list := []string{ "176.119.3.108", "178.207.85.119", "178.63.174.153", "188.241.140.212", "14.138.73.47", "131.72.138.45", "62.84.51.39", "62.109.23.246", "5.101.113.169", "213.231.8.30", "208.43.25.52", "112.208.6.209", "115.239.248.87", "117.216.190.71", "131.72.139.233", "129.194.97.21", "162.244.35.229", "178.219.10.23", "184.154.124.203", "184.154.146.100", "184.154.146.101", } i1.AddTitle("Malicious IP Addresses") i1.AddType("IP Watchlist") observable_i1 := i1.NewObservable() properties_1 := observable_i1.GetObjectProperties() properties_1.AddType("IP Address") for _, value := range list { properties_1.AddEqualsUriValue(value) } } else if collectionName == "et-compromised-ips" { source1 := stix.CreateInformationSource() source1.AddDescriptionText("The Test.FreeTAXII.com Server") source1.SetProducedTimeToNow() source1.AddReference("http://test.freetaxii.com") identity1 := stix.CreateIdentity() identity1.AddName("FreeTAXII") source1.AddIdentity(identity1) contribSource1 := stix.CreateInformationSource() identity2 := stix.CreateIdentity() identity2.AddName("Emerging Threats Compromised IPs") contribSource1.AddIdentity(identity2) contribSource1.AddReference("http://rules.emergingthreats.net/blockrules/compromised-ips.txt") source1.AddContributingSource(contribSource1) i1.AddProducer(source1) resp, _ := http.Get("http://rules.emergingthreats.net/blockrules/compromised-ips.txt") defer resp.Body.Close() rawhtmlbody, _ := ioutil.ReadAll(resp.Body) s := string(rawhtmlbody) s = strings.TrimSpace(s) body := strings.Split(s, "\n") i1.AddTitle("Compromised IP Addresses") i1.AddType("IP Watchlist") observable_i1 := i1.NewObservable() properties_1 := observable_i1.GetObjectProperties() properties_1.AddType("IP Address") for _, value := range body { properties_1.AddEqualsUriValue(value) } } var data []byte // if this.SysConfig.Poll.output == true { data, _ = json.MarshalIndent(s, "", " ") // } else { // data, _ = json.Marshal(s) // } return string(data) }
func main() { s := stix.New() i1 := s.NewIndicator() s.SetTimestampToNow() i1.AddIdRef("companyfoo:indicator-1234-1234-1234-1234") i1.AddVersion("2.0") i1.SetTimestampToNow() i1.SetNegate(false) i1.AddTitle("Some really neat indicator that we found") i1.AddType("URL Watchlist") i1.AddAlternativeID("CV-2014-12-12345") i1.AddAlternativeID("CV-2015-02-54321") i1.AddDescriptionText("", "Some long description") i1.AddShortDescriptionText("", "Some shorter description") i1.AddValidTimePosition("2015-01-01T00:00:00-0700", "2015-02-02T23:59:59-0700") i1.AddValidTimePosition("2014-01-01T00:00:00-0700", "2014-02-02T23:59:59-0700") source1 := stix.CreateInformationSource() source1.AddDescription("Some details about this source") source1.AddStartTime("2015-01-01T11:12:13-0700") source1.AddEndTime("2015-01-05T11:12:13-0700") source1.AddProducedTime("2015-01-05T11:12:13-0700") source1.AddReceivedTime("2015-01-05T11:12:13-0700") source1.AddRoleDetail("MyRoleVocab-1.0", "http://example.com/MyRoleVocab-1.0.txt", "CIO") identity1 := stix.CreateIdentity() identity1.CreateId() identity1.AddIdRef("companyfoo:identity-1234-1234-1234-1234") identity1.AddName("Lego Guy 1") source1.AddIdentity(identity1) // Create contributing source 1 contribSource1 := stix.CreateInformationSource() contribSource1.AddDescription("Special source 1") identity2 := stix.CreateIdentity() identity2.AddName("George the Lego Guy") contribSource1.AddIdentity(identity2) // Create contributing source 2 contribSource2 := stix.CreateInformationSource() contribSource2.AddDescription("Special source 2") identity3 := stix.CreateIdentity() identity3.AddName("Fred the Lego Guy") contribSource2.AddIdentity(identity3) source1.AddContributingSource(contribSource1) source1.AddContributingSource(contribSource2) source1.AddReference("http://foo.com/foo.txt") source1.AddReference("http://bar.com/bar.txt") con1 := stix.CreateConfidence() con1.CreateTimeStamp() con1.AddTimeStampPrecision("0.0") con1.AddValueDetail("MyConfidenceVocab-1.0", "http://example.com/MyConfidenceVocab-1.0.txt", "Super Sure") con1.AddDescription("We are super sure about this one") con1.AddSource(source1) con2 := stix.CreateConfidence() con2.CreateTimeStamp() con2.AddTimeStampPrecision("0.0") con2.AddValueDetail("MyConfidenceVocab-1.0", "http://example.com/MyConfidenceVocab-1.0.txt", "Super Sure") con2.AddDescription("These people are more sure") con2.AddSource(source1) con1.AddConfidenceAssertion(con2) i1.AddConfidence(con1) i1.AddProducer(source1) i2 := s.NewIndicator() i2.SetNegate(true) // fmt.Println(s.STIXPackage.Id) // fmt.Println(s.STIXPackage.Indicators[0].Title) // fmt.Println(s.STIXPackage.Indicators[0].Type[0].Value) // fmt.Println(s.STIXPackage.Indicators[0].Producer.Identity.Name) //fmt.Println(i) var data []byte data, _ = json.MarshalIndent(s, "", " ") fmt.Println(string(data)) }