Copying an SD card using dd does not copy exactly

ddhas a long history of creating exact bit for bit duplicates. diff can be used to prove this quite handily

Note: you don't mention what version of Ubuntu you are running. The only reason that makes a difference is that the status switch usage has changed.

Ubuntu 14.04 Excerpt from man dd

 status=WHICH
              WHICH info to suppress outputting to stderr; 'noxfer' suppresses
              transfer stats, 'none' suppresses all

Ubuntu 16.04 excerpt from man dd

status=LEVEL
              The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
              the final transfer statistics, 'progress' shows periodic transfer statistics

All that aside, the only things I can think of that would result in your image file having a different bit pattern than your source is either:

User Error:

A) An attempt to image a mounted partition (an exceedingly bad idea)

B) Failure to sync leaving data behind in the kernel buffer.

or

Hardware failure:

C) A failing area on the disk where you stored the image. This implies impending failure of the drive (I hope you have backups, if not, hop to it!)

D) A dodgy connection providing poor connectivity to either the source or target media device

You would be wise to check the smart status of the drive you stored the image on.

The fact that dcfldd also resulted in a mismatch leads me to believe that you have either a failing cable or a failing storage media (whether on the input media or the output media)