Skip to content

Commit c23b4fd

Browse files
authored
Merge pull request #7849 from eugene7646/release-4.21.0
Using TSK_MALWARE standard Autopsy artifact (AUT-2471)
2 parents c1c19db + db2a497 commit c23b4fd

File tree

3 files changed

+14
-46
lines changed

3 files changed

+14
-46
lines changed

Core/src/com/basistech/df/cybertriage/autopsy/malwarescan/MalwareScanIngestModule.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ private static class SharedProcessing {
134134
"application/x-msdos-program"//NON-NLS
135135
).collect(Collectors.toSet());
136136

137-
private static final String MALWARE_TYPE_NAME = "TSK_MALWARE";
138-
private static final String MALWARE_CONFIG = "Cyber Triage Cloud";
137+
private static final String MALWARE_CONFIG = ""; // NOTE: Adding a configuration complicates NTL branch UI
139138

140139
private static final Logger logger = Logger.getLogger(MalwareScanIngestModule.class.getName());
141140

@@ -235,18 +234,13 @@ private IngestJobState getNewJobState(IngestJobContext context, boolean uploadFi
235234

236235
// setup necessary variables for processing
237236
SleuthkitCase tskCase = Case.getCurrentCaseThrows().getSleuthkitCase();
238-
BlackboardArtifact.Type malwareType = tskCase.getBlackboard().getOrAddArtifactType(
239-
MALWARE_TYPE_NAME,
240-
Bundle.MalwareScanIngestModule_malwareTypeDisplayName(),
241-
BlackboardArtifact.Category.ANALYSIS_RESULT);
242-
243237
return new IngestJobState(
244238
context,
245239
tskCase,
246240
new PathNormalizer(tskCase),
247241
new FileTypeDetector(),
248242
licenseInfoOpt.get(),
249-
malwareType,
243+
BlackboardArtifact.Type.TSK_MALWARE,
250244
uploadFiles,
251245
true
252246
);

Core/src/org/sleuthkit/autopsy/datamodel/Artifacts.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import static org.sleuthkit.datamodel.BlackboardArtifact.Type.TSK_TL_EVENT;
6565
import static org.sleuthkit.datamodel.BlackboardArtifact.Type.TSK_ASSOCIATED_OBJECT;
6666
import static org.sleuthkit.datamodel.BlackboardArtifact.Type.TSK_KEYWORD_HIT;
67+
import static org.sleuthkit.datamodel.BlackboardArtifact.Type.TSK_MALWARE;
6768

6869
/**
6970
* Classes for creating nodes for BlackboardArtifacts.
@@ -73,10 +74,6 @@ public class Artifacts {
7374
private static final Set<IngestManager.IngestJobEvent> INGEST_JOB_EVENTS_OF_INTEREST
7475
= EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED);
7576

76-
// this is currently a custom TSK artifact type, created in MalwareScanIngestModule
77-
private static BlackboardArtifact.Type MALWARE_ARTIFACT_TYPE = null;
78-
private static final String MALWARE_HITS = "TSK_MALWARE";
79-
8077
/**
8178
* Base class for a parent node of artifacts.
8279
*/
@@ -247,15 +244,6 @@ static class TypeFactory extends ChildFactory.Detachable<TypeNodeKey> implements
247244
@SuppressWarnings("deprecation")
248245
private static TypeNodeKey getTypeKey(BlackboardArtifact.Type type, SleuthkitCase skCase, long dsObjId) {
249246

250-
// Get the custom TSK_MALWARE artifact type from case database
251-
if (MALWARE_ARTIFACT_TYPE == null) {
252-
try {
253-
MALWARE_ARTIFACT_TYPE = skCase.getArtifactType(MALWARE_HITS);
254-
} catch (TskCoreException ex) {
255-
logger.log(Level.WARNING, "Unable to get TSK_MALWARE artifact type from database : ", ex); //NON-NLS
256-
}
257-
}
258-
259247
int typeId = type.getTypeID();
260248
if (TSK_EMAIL_MSG.getTypeID() == typeId) {
261249
EmailExtracted.RootNode emailNode = new EmailExtracted(skCase, dsObjId).new RootNode();
@@ -281,9 +269,9 @@ private static TypeNodeKey getTypeKey(BlackboardArtifact.Type type, SleuthkitCas
281269
} else if (TSK_HASHSET_HIT.getTypeID() == typeId) {
282270
HashsetHits.RootNode hashsetHits = new HashsetHits(skCase, dsObjId).new RootNode();
283271
return new TypeNodeKey(hashsetHits, TSK_HASHSET_HIT);
284-
} else if (MALWARE_ARTIFACT_TYPE != null && MALWARE_ARTIFACT_TYPE.getTypeID() == typeId) {
272+
} else if (TSK_MALWARE.getTypeID() == typeId) {
285273
MalwareHits.RootNode malwareHits = new MalwareHits(skCase, dsObjId).new RootNode();
286-
return new TypeNodeKey(malwareHits, MALWARE_ARTIFACT_TYPE);
274+
return new TypeNodeKey(malwareHits, TSK_MALWARE);
287275
} else {
288276
return new TypeNodeKey(type, dsObjId);
289277
}

Core/src/org/sleuthkit/autopsy/datamodel/MalwareHits.java

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,19 @@
4444
import org.sleuthkit.autopsy.coreutils.Logger;
4545
import org.sleuthkit.autopsy.ingest.IngestManager;
4646
import org.sleuthkit.autopsy.ingest.ModuleDataEvent;
47-
import org.sleuthkit.datamodel.BlackboardArtifact;
4847
import org.sleuthkit.datamodel.SleuthkitCase;
4948
import org.sleuthkit.datamodel.SleuthkitCase.CaseDbQuery;
5049
import org.sleuthkit.datamodel.TskCoreException;
5150
import org.sleuthkit.autopsy.datamodel.Artifacts.UpdatableCountTypeNode;
5251
import org.sleuthkit.datamodel.AnalysisResult;
52+
import static org.sleuthkit.datamodel.BlackboardArtifact.Type.TSK_MALWARE;
5353
import org.sleuthkit.datamodel.Score;
5454

5555
/**
5656
* Malware hits node support. Inner classes have all of the nodes in the tree.
5757
*/
5858
public class MalwareHits implements AutopsyVisitableItem {
5959

60-
private static final String MALWARE_HITS = "TSK_MALWARE"; // this is currently a custom TSK artifact type, created in MalwareScanIngestModule
61-
private static BlackboardArtifact.Type MALWARE_ARTIFACT_TYPE = null;
62-
private static String DISPLAY_NAME;
6360
private static final Logger logger = Logger.getLogger(MalwareHits.class.getName());
6461
private static final Set<IngestManager.IngestJobEvent> INGEST_JOB_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestJobEvent.COMPLETED, IngestManager.IngestJobEvent.CANCELLED);
6562
private static final Set<IngestManager.IngestModuleEvent> INGEST_MODULE_EVENTS_OF_INTEREST = EnumSet.of(IngestManager.IngestModuleEvent.DATA_ADDED);
@@ -126,20 +123,9 @@ final void update() {
126123
return;
127124
}
128125

129-
// Get the custom TSK_MALWARE artifact type from case database
130-
if (MALWARE_ARTIFACT_TYPE == null) {
131-
try {
132-
MALWARE_ARTIFACT_TYPE = skCase.getArtifactType(MALWARE_HITS);
133-
DISPLAY_NAME = MALWARE_ARTIFACT_TYPE.getDisplayName();
134-
} catch (TskCoreException ex) {
135-
logger.log(Level.WARNING, "Unable to get TSK_MALWARE artifact type from database : ", ex); //NON-NLS
136-
return;
137-
}
138-
}
139-
140126
String query = "SELECT blackboard_artifacts.artifact_obj_id " //NON-NLS
141127
+ "FROM blackboard_artifacts,tsk_analysis_results WHERE " //NON-NLS
142-
+ "blackboard_artifacts.artifact_type_id=" + MALWARE_ARTIFACT_TYPE.getTypeID() //NON-NLS
128+
+ "blackboard_artifacts.artifact_type_id=" + TSK_MALWARE.getTypeID() //NON-NLS
143129
+ " AND tsk_analysis_results.artifact_obj_id=blackboard_artifacts.artifact_obj_id" //NON-NLS
144130
+ " AND (tsk_analysis_results.significance=" + Score.Significance.NOTABLE.getId() //NON-NLS
145131
+ " OR tsk_analysis_results.significance=" + Score.Significance.LIKELY_NOTABLE.getId() + " )"; //NON-NLS
@@ -182,7 +168,7 @@ public void propertyChange(PropertyChangeEvent evt) {
182168
* oldValue if the event is a remote event.
183169
*/
184170
ModuleDataEvent eventData = (ModuleDataEvent) evt.getOldValue();
185-
if (null != eventData && eventData.getBlackboardArtifactType().getTypeID() == MALWARE_ARTIFACT_TYPE.getTypeID()) {
171+
if (null != eventData && eventData.getBlackboardArtifactType().getTypeID() == TSK_MALWARE.getTypeID()) {
186172
malwareResults.update();
187173
}
188174
} catch (NoCurrentCaseException notUsed) {
@@ -248,13 +234,13 @@ public void update(Observable o, Object arg) {
248234
public class RootNode extends UpdatableCountTypeNode {
249235

250236
public RootNode() {
251-
super(Children.create(new HitFactory(DISPLAY_NAME), true),
252-
Lookups.singleton(DISPLAY_NAME),
253-
DISPLAY_NAME,
237+
super(Children.create(new HitFactory(TSK_MALWARE.getDisplayName()), true),
238+
Lookups.singleton(TSK_MALWARE.getDisplayName()),
239+
TSK_MALWARE.getDisplayName(),
254240
filteringDSObjId,
255-
MALWARE_ARTIFACT_TYPE);
241+
TSK_MALWARE);
256242

257-
super.setName(MALWARE_HITS);
243+
super.setName(TSK_MALWARE.getTypeName());
258244
// TODO make an icon
259245
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/artifact-icon.png");
260246
}
@@ -297,7 +283,7 @@ public String getItemType() {
297283
*/
298284
@Override
299285
void updateDisplayName() {
300-
super.setDisplayName(DISPLAY_NAME + " (" + malwareResults.getArtifactIds().size() + ")");
286+
super.setDisplayName(TSK_MALWARE.getDisplayName() + " (" + malwareResults.getArtifactIds().size() + ")");
301287
}
302288
}
303289

0 commit comments

Comments
 (0)