Looking at your icmp_bad.pcap file, it seems that all packets of the packets are ICMP over IPv4 packets and they all have
The bad checksums you see are the checksums of the IPv4 header or the TCP over IPv4 header
These checksums are likely to be bad because the data over ICMP is only a partial copy of the packet that was sent to which the ICMP was returned.
I don't see any reason to try and fix these checksums.
If you do want to fix them for some reason, you will have to fix the IPv4 layer over ICMP.
And possible the checksum in the Transport layer over the IPv4 layer over ICMP.
The reason the packets are marked in black in Wireshark is not
because of the bad checksums you see.
It is because of the fact that these are Destination Unreachable ICMP packets which indicate a problem with the packets that were sent to which these packets were likely created.
I hope this helps,